我试图了解requestMatchers,antMatchers和authorizeRequests的用途。
如果我们仅使用requestMatchers会发生什么?
http.requestMatchers();
如果使用requestMatchers和antMatchers会发生什么?
http.requestMatchers()。antMatchers(“ /”,“ / login”);
如果使用requestMatchers,antMatchers和authorizeRequests会发生什么?
http.requestMatchers()。antMatchers(“ /”,“ / login”)。and()。authorizeRequests()。anyRequest()。authenticated();
因此,在第3种情况下,requestMatchers()将'/ login'和'/'设为例外,因此它们将不被认证,或者这意味着它们也需要认证。
将这整个requestMatchers()放在authorizeRequests()之前会造成混乱。需要知道它们的确切作用以及结合的蚁药会做什么。
答案 0 :(得分:0)
答案 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使我们变得如此简单,只需几行配置即可从坚实的安全基础开始。只需一个小时左右的时间,您就可以尝试生产了。
祝你好运!