anyRequest

来源:2-5 安全配置

一日看盡長安花

2020-11-08

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

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

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

图片描述

写回答

2回答

反重力

2022-05-22

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

0
0

接灰的电子产品

2020-11-08

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

0
4
cyper
回复
一日看盡長安花
这个问题提的真好,我突然间顿悟了!如果我的理解没错的话, authorizeRequests 其实已经是 鉴权 配置了!!那个anyRequest()authenticated已经属于鉴权,这个authenticated的名字具有误导性,初看会觉得鉴权和认证怎么混一起了!突然想起老师说的expression里有authenticated这么一个东西。expression里出现的应该全部属于鉴权。
2022-03-29
共4条回复

Spring Security+OAuth2 精讲,打造企业级认证与授权

一站式掌握主流安全框架与行业解决方案,从容应对各种安全难题。

1042 学习 · 316 问题

查看课程