开发者学堂课程【Spring Security知识精讲与实战演示(四):案例之认证服务security配置】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13085
案例之认证服务security配置
内容介绍:
一、认证服务介绍
二、配置security
三、总结
一、认证服务介绍
在认证服务中将认证相关的代码已经写完,但是现在这个代码并不能起作用,因为现在UserServicelmpl并不知道这里有代码,所以需要在server的文件里边指定一个page类,命名如下:
二、配置security
要继承WebSecurityConfigurerAdapter这一个类,在这里边将几个方法进行重写,按顺序来写,这里边就一定会用到定义的业务逻辑,所以在这里边写上一个UserService但实际一开始并不能识别这个UserService,因为UserService已经继承了UserDetailsService,这里边还可以这么写,其实现在这么写UserService也没有错,效果是一模一样,没有区别,在这个里面可以加上一个Autowired,还需要一个加密的一个方式,所以在这里要加上一个Bean,在这里边写上一个Public,使用BGryptPasswordEncoder,写完这个里面的内容就要重写方法,在这里要重写两个方法,首先第一个方法要指定当前的认证信息,这个方法是在这个地方,如图所示:
把这个方法复制到刚才的文件中,把图中的protected改成public,把this这一行改成auth.userDetailsService(userService),这样就指定好了userService,这里只是指定了一个认证的业务逻辑方法,接下来需要指定一个password的加密方式,依旧是在里面写上一个passwordEncoder,使用它内置的一个passwordEncode,因为这个方法是重写的,可以在上边加上一个Override,这个不是必须的。除了重写它,还需要重写另外一个,就是指定这个的一个自我管理的一个规则,那一个是http,内容如图所示:
把中间这段删掉不要了,只要一个盒子,那么这个也是重写的,也可以加上那个Override,那么在这里面使用http,首先要在这里写上一个authorizeRequests作为一个开始,现在并没有在项目中配置任何自定义的页面,正常来说要有一个自己的认证页面,不要用系统本身的,当然也可以总写自己的项目,比如上面并没有自己的认证页面,但是重写处理器了,自己的的项目不接收报表单,文件里边接收的是自己的请求,这都是可以的,那这里就不再去做任何认证方面的一些过多的说明,直接使用它默认的认证,那一套机制就可以了,在这里边配置一个.anyRequest,任何的请求都必须认证通过,才能访问authenticated,这个配完之后可以写一个.and,就证明这个一个新的配置的开始,再来一个.formlogin,这个的意思是要去控制formlogin,这里还需要对.loginProcessingUrl进行一个指定,虽然这个不是自己写的,但是要指定,指定他主要是为了指定.permitALL,就是可以匿名访问,如果不指定这一句,那将无法访问这个页面。那这里做的一个简单的配置就配完了,做的是全部都是原生的配置,只是放了一个login这么一个路径,主要是强调,这里是有两段配置,如果是想让它建成一个OAuth2的一个认证服务,必须要新增一段这个而且要重写一个方法,方法的名字要写对:
总的代码如下:
@Configuration@EnableWebSecurity
Public class WebSecurityConfig extends
extendsWebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Bean
public BCryptPasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder() ;
三、总结
其实这个对象不是所有的模式都要用,这里边有四种模式,这个主要是在条码模式用,当然这个授权码模式是最重要的一个模式,这个配置千万不要忽略,如果这个配置忽略了,后续将无法使用授权码模式,到此sercurity这配置完成了。