spring security 没有token报错设置
时间: 2023-08-12 12:06:27 浏览: 292
SpringSecurity实战源码
在Spring Security中,如果没有设置token,可能会导致报错。根据提供的引用内容,可以看到在登录方法中,使用了`JWTUtil.createToken`方法来创建token。这意味着在登录成功后,应该生成一个token并返回给客户端。如果没有正确生成token或者没有将token设置到响应中,那么在后续的请求中,没有token会导致认证失败。
为了解决这个问题,你可以确保在登录成功后,将生成的token设置到响应中返回给客户端。这样客户端在后续的请求中就可以携带这个token进行认证了。另外,你还需要在Spring Security的配置中添加一个过滤器,用于验证请求中的token是否有效。
参考代码如下所示:
```java
public class JwtAuthenticationFilter extends OncePerRequestFilter {
private final JwtTokenProvider jwtTokenProvider;
public JwtAuthenticationFilter(JwtTokenProvider jwtTokenProvider) {
this.jwtTokenProvider = jwtTokenProvider;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String token = jwtTokenProvider.resolveToken(request);
if (token != null && jwtTokenProvider.validateToken(token)) {
Authentication authentication = jwtTokenProvider.getAuthentication(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(request, response);
}
}
```
然后在Spring Security的配置中添加该过滤器:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final JwtTokenProvider jwtTokenProvider;
public SecurityConfig(JwtTokenProvider jwtTokenProvider) {
this.jwtTokenProvider = jwtTokenProvider;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// 其他配置...
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class);
}
}
```
这样配置后,当请求中携带有效的token时,Spring Security会自动进行认证并授权。如果没有token或者token无效,会返回相应的错误信息。
希望这个解答对你有帮助。如果还有其他问题,请随时提问。
#### 引用[.reference_title]
- *1* *2* *3* [Spring Security + token前后端分离该怎么认证](https://blog.csdn.net/qq_16253859/article/details/123536072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文