这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档
我就只说下SpringSecurity核心功能:
-
<李>认证(你是谁)李>
<李>授权(你能干什么)李>
<李>攻击防护(防止伪造身份)李>
这里我们以SpringBoot作为项目的基本框架,我这里使用的是maven的方式来进行的包管理,所以这里先给出集成Spring Security的方式
& lt; dependencies> … & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-security & lt;/dependency> … & lt;/dependencies> >之前然后建立一个Web层请求接口
@RestController @RequestMapping(“/用户”) 公开课用户控件{ @GetMapping 公共字符串getuser () { 返回“你好Spring Security”; } } >之前接下来可以直接进行项目的运行,并进行接口的调用看看效果了。
我们首先通过浏览器进行接口的调用,直接访问http://localhost: 8080/用户,如果接口能正常访问,那么应该显示“你好Spring Security”。
但是我们是没法正常访问的,出现了下图的身份验证输入框
#安全使能 security.basic。启用=false
刚才看到的登录框是SpringSecurity是框架自己提供的,被称为httpBasicLogin。显示它不是我们产品上想要的,我们前端一般是通过表单提交的方式进行用户登录验证的,所以我们就需要自定义自己的认证逻辑了。
每个系统肯定是有自己的一套用户体系的,所以我们需要自定义自己的认证逻辑以及登录界面。
这里我们需要先对SpringSecurity进行相应的配置@ configuration 公开课BrowerSecurityConfig延伸WebSecurityConfigurerAdapter { @Override 保护无效配置(HttpSecurity http){抛出异常 http.formLogin()//定义当需要用户登录时候,转到的登录页面。 ,() .authorizeRequests()//定义哪些URL需要被保护,哪些不需要被保护 .anyRequest()//任何请求,登录后可以访问 .authenticated (); } } >之前接下来再配置用户认证逻辑,因为我们是有自己的一套用户体系的
@ component 公共类MyUserDetailsService实现UserDetailsService { 私人日志记录器=LoggerFactory.getLogger (getClass ()); @Override 公共UserDetails loadUserByUsername(字符串的用户名)抛出UsernameNotFoundException { logger.info(“用户的用户名:{}”,用户名);//TODO根据用户名,查找到对应的密码,与权限//封装用户信息,并返回。参数分别是:用户名:密码,用户权限 用户用户=新用户(userame,“123456”, AuthorityUtils.commaSeparatedStringToAuthorityList (" admin ")); 返回用户; } } >之前这里我们没有进行过多的校验,用户名可以随意的填写,但是密码必须得是“123456”,这样才能登录成功。
同时可以看的到,这里用户对象的第三个参数,它表示的是当前用户的权限,我们将它设置为“admin”
。运行一下程序进行测试,会发现登录界面有所改变