周刚vk

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

------------恢复内容开始------------

现在我们就可以去进行springscurity的配置了。首先我们新建一个配置类。然后该类需要添加@Configuration注解,然后还要集成WebSecurityConfigurerAdapter这个类。

在这个类中我们先去注入userDetailsService这个对象,该对象本身就存在于WebSecurityConfigurerAdapter这个类中,然后我们加上@Override这个注解,去重写其中的方法。

 

 

 

这里我们需要重写 configure方法,在这个方法中调用userDetailsService和passwordEncoder。然后将自己写的2个方法传入进去。这样就可以使用自己写的方法。

这里的passwordEncoder使用的是BCryptPasswordEncoder密码解析器,该解析器是springcurity自带的密码解析器。

 

 

 这样就相当于到时候,springcurity会走我们自己重写的userDetailservice,在里面有一个adminService.getAdminByUserName()。这样就可以获取用户名的信息,然后里面的密码匹配我们是通过passwordEncoder去完成的。

再下面就是springcurity完成的配置了,先找到入参是HttpSecurity的configure然后进行重写。

 

然后我们使用的是JWT,所有我们不需要使用csrf,我们可以将其进行关闭。

 protected void configure(HttpSecurity http) throws Exception {
        //使用JWT,不需要使用csrf
        http.csrf()
                .disable()
} 

 因为使用了token,也不需要session,所以进行相应的配置

//基于token,不需要session
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) 

配置完之后,使用.and(),方法进行连接。继续往下配。

现在配置,无需token就可以访问的接口,login和loginout。除了这2个接口之外,其他的任何接口都需要进行token认证

.and()
.authorizeRequests()
//允许登录访问
.antMatchers("/login", "loginout")
.permitAll()
//除了上面的请求,其他的所有请求都要认证
.anyRequest()
.authenticated() 

继续配,这里我们的缓存也用不到。

 .and()
 //禁用缓存
.headers()
.cacheControl();

 

 添加jwt授权登录授权过滤器

以及添加自定义的未授权或未登录的结果返回。

 

 然后,我们需要新建一个登录过滤器。在configsecurity下新建一个JwtAuthencationTokenFilter。

 

 

 

 

 

  

  

 

------------恢复内容结束------------

posted on 2022-06-28 17:57  小蚂蚁啃地球vk  阅读(75)  评论(0)    收藏  举报