请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

anyRequest

 @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests(req->req.anyRequest().authenticated());
    }
}

这里配置的意思是不是说所有的请求都必须认证?

访问的结果是403而不是我理解的401

图片描述

正在回答 回答被采纳积分+3

插入代码

2回答

反重力 2022-05-22 11:45:21

我理解是因为这种配置下,会被AnonymousFilter拦截,并添加默认authentication: AnonymousToken。这时候代表authentication是通过的
再往下走到AffirmativeBased中会进行老师说的vote,检查到AnonymousToken没有访问资源的authorization,返回了403。

0 回复 有任何疑惑可以回复我~
接灰的电子产品 2020-11-08 20:04:44

这是由于你没有配置任何认证的方式,比如表单登录等。所以这种配置方式下Spring security会认为认证成功,然后进行授权检查,而在security config中配置的这个表达式在授权检查中返回了不通过,所以403

0 回复 有任何疑惑可以回复我~
  • 提问者 一日看盡長安花 #1
    是不是可以理解为要对请求进行 '认证',必须指定一种登录方式,如果没有指定的话,spring security则不会对相关请求进行认证,接着会做'授权'判断,又因为没有上一步的认证动作,所以授权是不通过的(因为这里授权通过的条件就是'已认证'请求)
    回复 有任何疑惑可以回复我~ 2020-11-08 20:25:18
  • 授权检查那块不是由于上一步没检查,而是这些表达式会作为授权环节的一个投票者进行投票。
    回复 有任何疑惑可以回复我~ 2020-11-08 21:53:54
  • 你说的“这些表达式”具体是指什么, 题主说的这个req->req.anyRequest().authenticated()算一个表达式吗
    回复 有任何疑惑可以回复我~ 2022-03-29 04:33:31
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号