采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests(req->req.anyRequest().authenticated()); } }
这里配置的意思是不是说所有的请求都必须认证?
认证
访问的结果是403而不是我理解的401
403
401
我理解是因为这种配置下,会被AnonymousFilter拦截,并添加默认authentication: AnonymousToken。这时候代表authentication是通过的再往下走到AffirmativeBased中会进行老师说的vote,检查到AnonymousToken没有访问资源的authorization,返回了403。
这是由于你没有配置任何认证的方式,比如表单登录等。所以这种配置方式下Spring security会认为认证成功,然后进行授权检查,而在security config中配置的这个表达式在授权检查中返回了不通过,所以403
是不是可以理解为要对请求进行 '认证',必须指定一种登录方式,如果没有指定的话,spring security则不会对相关请求进行认证,接着会做'授权'判断,又因为没有上一步的认证动作,所以授权是不通过的(因为这里授权通过的条件就是'已认证'请求)
授权检查那块不是由于上一步没检查,而是这些表达式会作为授权环节的一个投票者进行投票。
你说的“这些表达式”具体是指什么, 题主说的这个req->req.anyRequest().authenticated()算一个表达式吗
登录后可查看更多问答,登录/注册
一站式掌握主流安全框架与行业解决方案,从容应对各种安全难题。
792 9
1.0k 9
438 7
948 6
732 6