spring security自定义filter等,认证成功后依然是没登录的状态
时间: 2023-07-28 07:15:44 浏览: 108
spring mvc 和spring security自定义登录
5星 · 资源好评率100%
在Spring Security中,认证成功后,用户信息会被存储在一个叫做SecurityContext的对象中。如果你在自定义filter中进行了认证,需要将认证成功后的用户信息设置到SecurityContext中,否则Spring Security就无法识别你已经通过认证了。
可以通过以下代码将用户信息设置到SecurityContext中:
```
Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
```
其中,userDetails表示认证成功后的用户信息,这个需要替换成你自己的实现。同时,需要注意的是,这个代码需要在请求被执行之前调用。
另外,如果你是在Web应用中使用Spring Security,还需要确保你的自定义filter被正确地添加到了Spring Security的过滤器链中。可以使用以下代码确保你的自定义filter被添加到了过滤器链中:
```
http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
```
其中,customFilter表示你自己实现的自定义filter,需要替换成你自己的实现。需要注意的是,这个代码需要在WebSecurityConfigurerAdapter中的configure方法中调用。
阅读全文