项目里需要给一个接口(/system/user/profile/updatePwd)跳过token验证,项目使用的是springboot若依框架,网上查了很多办法,在SecurityConfig类里加上匿名访问结果不行报错,然后尝试用permitAll代替匿名访问还是一样报错,还去application.yml文件中添加了放行代码,还是报错,求问有什么其他解决办法吗,由于我是干后端的,前端是不是也需要做些更改呀,图片里是application.yml文件中添加ignore的部分,同时附上postman里的报错信息以及Security类的代码,谢谢各位了
报错信息:
"code": 401,
"msg": "认证失败,无法访问系统资源",
"data": null
若依白名单
SecurityConfig类里面配置
把你需要过滤的加在antMatchers
我这边就是这样做的,可以用
根据报错信息来看,似乎请求仍然需要认证才能访问,可能需要再检查一下代码和配置文件中的问题。
下面是一些可能的解决方案:
确保SecurityConfig类中添加的匿名访问配置正确
在SecurityConfig类中添加匿名访问配置时,需要确保配置的路径与接口路径完全匹配,且配置的顺序正确,具体可以参考以下代码:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/system/user/profile/updatePwd");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
其中,configure(WebSecurity web)方法用于配置不需要进行安全检查的路径,而configure(HttpSecurity http)方法则用于配置安全策略。
确保请求中未携带token
如果请求中携带了token,就算配置了匿名访问也会被认为已经认证通过。可以使用Postman等工具,或者在浏览器中打开接口路径,检查请求头部中是否携带了token。
检查前端代码中是否正确处理了token
如果前端代码中有处理token的逻辑,也需要确保在请求该接口时未携带token,或者在请求头部中添加相应的处理逻辑,例如在请求头部中添加"Authorization: Bearer null"。
希望这些方案可以帮到你解决问题。
有自定义filter吧,只有spring security,只要配置类放行即可,或者说用WebSecurity放行,这相当于独立的拦截链并且优先级较高
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据您提供的信息,401错误表示未经授权访问,这意味着Spring Security无法验证您的请求,因此拒绝访问。
为了跳过Spring Security的token验证,您可以将目标接口添加到WebSecurityConfig
文件中的configure
方法的匿名访问列表中。以下是一个示例:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/system/user/profile/updatePwd").anonymous()
.anyRequest().authenticated()
.and().csrf().disable();
}
}
在这个配置中,/system/user/profile/updatePwd
这个接口是可以匿名访问的。.anyRequest().authenticated()
表示所有其他接口需要登录后才能访问,防止未授权访问。
这样做应该可以解决您的问题。如果未解决,请提供更多信息或代码以供进一步检查。
如果我的回答解决了您的问题,请采纳!