Spring requestMatchers,antMatchers和authorizeRequests用法

时间:2018-12-28 16:10:43

标签: java spring spring-security

我试图了解requestMatchers,antMatchers和authorizeRequests的用途。

  1. 如果我们仅使用requestMatchers会发生什么?

    http.requestMatchers();

  2. 如果使用requestMatchers和antMatchers会发生什么?

    http.requestMatchers()。antMatchers(“ /”,“ / login”);

  3. 如果使用requestMatchers,antMatchers和authorizeRequests会发生什么?

    http.requestMatchers()。antMatchers(“ /”,“ / login”)。and()。authorizeRequests()。anyRequest()。authenticated();

因此,在第3种情况下,requestMatchers()将'/ login'和'/'设为例外,因此它们将不被认证,或者这意味着它们也需要认证。

将这整个requestMatchers()放在authorizeRequests()之前会造成混乱。需要知道它们的确切作用以及结合的蚁药会做什么。

2 个答案:

答案 0 :(得分:0)

  1. 毫无意义 2.添加一些蚂蚁模式的路径,这些路径曾经与传入请求中的url匹配,如果匹配,则将选择具有这些路径的filterchain来过滤该传入请求。 3.authorizeRequests()。anyRequest()。authenticated()表示通过所选过滤器链对所有传入请求进行身份验证。 简而言之,requestMatchers用于设置与所需请求匹配的路径,authorizeRequests用于根据您通过诸如antMatchers(“ XXX”)。permitAll()之类的方法设置的规则对那些请求进行身份验证。

答案 1 :(得分:0)

如果仅使用requestMatchers会发生什么? http.requestMatchers();

这只是一个无用的方法调用。用英语来说,它表示为:对于所有传入的http请求,我想根据此匹配器列表过滤它们,当然也没有匹配列表,因此它什么也不做。

如果使用requestMatchers和antMatchers会发生什么?

http.requestMatchers()。antMatchers(“ /”,“ / login”);

另一个无用的方法调用。用英语来说,它表示为:对于所有传入的HTTP请求,请根据此匹配器列表“ /”和“ / login”对它们进行过滤,但是您不告诉它要做什么,因此它什么也不做。

如果使用requestMatchers,antMatchers和 authorizeRequests?

http.requestMatchers()。antMatchers(“ /”, “ / login”)。and()。authorizeRequests()。anyRequest()。authenticated();

那好多了。用英语来说,它表示为:对于所有传入的HTTP请求,我想根据此匹配器列表(即“ /”和“ / login”)对它们进行过滤,并且我希望只有经过身份验证的用户才能访问它们

如果您使用的是Spring Security,则Spring将检查其SecurityContext(存储在ThreadLocal变量中)以找出是否存在包含{{1 }}(经过身份验证的用户,通常是Authentication对象的实例)。如果存在,则允许继续该请求;否则,您将收到丑陋的403,禁止。

因此,在第3种情况下requestMatchers()将'/ login'设为异常,并且 '/',因此它们将不会通过身份验证,或者表示它们也需要 身份验证。

如上所述。

事情是通过Spring Security进行Spring Boot使我们变得如此简单,只需几行配置即可从坚实的安全基础开始。只需一个小时左右的时间,您就可以尝试生产了。

祝你好运!