当前位置: 首页 > 知识库问答 >
问题:

Spring requestMatchers、antMatchers和authorizeRequests用法

齐典
2023-03-14

我试图理解requestMatchers、antMatchers和authorizeRequests的用途。

>

  • 如果我们只使用请求匹配器会发生什么?

    http.request匹配器();

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

    http。requestMatchers()。antMatchers(“/”,“/登录”);

    如果使用html" target="_blank">请求匹配器、antMatcher和授权请求会发生什么?

    http。requestMatchers()。antMatchers(“/”,“/登录”)。和()。authorizeRequests()。anyRequest()。已验证();

    因此,在案例3中,requestMatchers()是否对“/登录”和“/”进行了例外处理,因此它们不会被验证,或者这是否意味着它们也需要验证。

    将requestMatchers()放在authorizeRequests()之前会让人感到困惑。需要知道它们到底做什么,以及结合antmacthers会做什么。

  • 共有2个答案

    郎灿
    2023-03-14
    1. 无意义的2.add一些带有ant模式的路径,这些路径用于在传入请求中与url匹配,如果匹配,将选择具有这些路径的过滤链来过滤传入请求。3.authorize请求(). anyRequest()。身份验证()意味着通过所选过滤链对所有传入请求进行身份验证。简而言之,请求匹配器用于设置路径以匹配您想要的请求,授权请求用于根据您通过antMatcher("XXX"). permitAll()等方法设置的规则对这些请求进行身份验证。
    罗俭
    2023-03-14

    如果我们只使用请求匹配器会发生什么?http.request匹配器();

    这只是一个无用的方法调用。在英文中,它的意思是:对于所有传入的http请求,我想根据匹配器列表对它们进行筛选,当然没有匹配列表,所以它什么都不做。

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

    http。requestMatchers()。antMatchers(“/”,“/登录”);

    另一个无用的方法调用。在英文中,它的意思是:对于所有传入的http请求,根据匹配器列表、“/”和“/登录”对它们进行过滤,但您不告诉它要做什么,所以它也不做任何操作。

    如果使用请求匹配器、antMatcher和授权请求会发生什么?

    http。requestMatchers()。antMatchers(“/”,“/登录”)。和()。authorizeRequests()。anyRequest()。已验证();

    这好多了。在英语中,它的内容是:对于所有传入的超文本传输协议请求,我想根据这个匹配器列表过滤它们,即“/”和“/login”,我希望它们只能由经过身份验证的用户访问。

    如果您使用的是Spring Security,Spring将检查其SecurityContext(存储在ThreadLocal变量中),以确定是否有包含主体(经过身份验证的用户,通常是User详细信息对象的实例)的身份验证对象。如果有,则允许请求继续,如果没有,则得到一个丑陋的403,禁止。

    因此,在案例3中,requestMatchers()是否对“/登录”和“/”进行了例外处理,因此它们不会被验证,或者这是否意味着它们也需要验证。

    如上所述。

    问题是,通过Spring Security的Spring Boot让我们非常容易,只需几行配置就可以从坚实的安全基础开始。试一试,一个小时左右,你就可以开始生产了。

    祝你好运,伙计!

     类似资料:
    • 我在ZUUL应用程序中使用spring security,我的API控制对我的微服务的所有访问。使用过滤器可以允许每个登录名指定路由,在过滤器中,我有一个通过“.antMatchers”方法进行控制的对象HttpSecurity。 例如: 我想允许所有在任何语言环境、乞讨、中间或末端具有“昂首阔步”的路线。我在想String类的方法包含,如果包含“昂首阔步”,则允许全部。

    • 我想在我的浏览器上打开招摇的用户界面。这是我的密码 但它不起作用。我仍然需要输入httpBasic()提供的基本身份验证 所以我添加了其他人找到的以下代码 现在,我可以访问localhost:8080/swagger-ui.html,但是仍然会弹出httpBasic窗口。我可以点击cancel关闭窗口,继续使用swagger ui。但是我不知道是什么导致了这个问题

    • 问题内容: 我一直在寻找答案,但是找不到任何有效果的东西 在我的休息服务中,我在/ account / {id} / download下保留了一些功能,我想在SecurityConfig java文件中设置acces ROLE,只有ROLE_TOKENSAVED用户可以访问此URL。 当{id}可更改时,模式应如何显示? 我尝试了一些正则表达式模式,但没有按我希望的那样工作,这是我的一些尝试: 在

    • 我写了一个GET API与endpointURL: /service/open/v1/test 在WebSecurity配置适配器下,我的httpSecurity配置如下: 但是在访问API时获取HttpStatus 403。请帮忙。

    • 我们正在1.3Spring Boot应用程序中设置Spring Security性。我们已经创建了一个类来使用Java配置来配置所有内容,但是出于某种原因,每当我试图访问任何配置为“permitall()”的URL时,我都会得到一个类似于下面这样的消息响应: 我被拒绝...有什么想法吗?

    • 我试图使用SpringBoot作为后端配置用户的角色,我的方法定义如下: 错误: 组织。springframework。豆。工厂BeanCreationException:创建名为“springSecurityFilterChain”的bean时出错,该bean在类路径资源[org/springframework/security/config/annotation/web/configurati