当前位置: 首页 > 面试题库 >

使用Spring Security,如何使用HTTP方法(例如GET,PUT,POST)来区分特定URL模式的安全性?

卫博学
2023-03-14
问题内容

Spring Security参考指出:

您可以使用多个元素为不同的URL集定义不同的访问要求,但是将按照列出的顺序评估它们,并且将使用第一个匹配项。因此,您必须将最具体的匹配项放在顶部。您还可以添加方法属性以将匹配限制为特定的HTTP方法(GET,POST,PUT等)。如果请求匹配多个模式,则特定于方法的匹配将优先考虑,而不管顺序如何。

如何配置Spring Security,以便根据用于访问URL模式的HTTP方法,以不同的方式保护对特定URL模式的访问?


问题答案:

这仅与配置有关。它表示<intercept-url>将在<http />配置文件的标记中从上到下评估元素:

<http auto-config="true">
    <intercept-url pattern="/**" access="isAuthenticated" />
    <intercept-url pattern="/login.jsp" access="permitAll" />
</http>

在上面的示例中,我们试图仅允许经过身份验证的用户访问所有内容,除了登录页面(用户必须先登录,对吧!!)。但是,根据文档,这 将不起作用
,因为不太具体的匹配位于最前面。因此,完成此示例目标的正确配置之一是:

<http auto-config="true">
    <intercept-url pattern="/login.jsp" access="permitAll" />
    <intercept-url pattern="/**" access="isAuthenticated" />
</http>

将更具体的匹配放在最前面。

引号所说的最后一件事是关于HTTP方法的。您可以使用它来指定匹配项,因此:

<http auto-config="true">
    <intercept-url pattern="/client/edit" access="isAuthenticated" method="GET" />
    <intercept-url pattern="/client/edit" access="hasRole('EDITOR')" method="POST" />
</http>

在第二个示例中,/client/edit通过GET 访问仅需要对用户进行身份验证,但是/client/edit通过POST
访问(例如,提交编辑表单),用户需要具有该EDITOR角色。在某些地方可能不鼓励使用该url模式,但这只是一个示例。



 类似资料:
  • 本文向大家介绍如何使用SpringSecurity保护程序安全,包括了如何使用SpringSecurity保护程序安全的使用技巧和注意事项,需要的朋友参考一下 首先,引入依赖: 引入此依赖之后,你的web程序将拥有以下功能: 所有请求路径都需要认证 不需要特定的角色和权限 没有登录页面,使用HTTP基本身份认证 只有一个用户,名称为user 配置SpringSecurity springsecur

  • 使用HTTP RESTful方法GET/POST/等。它们是多余的吗? 我只是没有看到建议为方法调用添加一个限定符(据我所知,GET、POST等..是一个限定符)。为什么不直接通过URL调用一个方法(像server.domain/methods/AddNewProduct那样),由服务器端来决定怎么做呢?我知道什么时候使用GET、POST和UPDATE等。(CRUD过程bla-bla-bla)我只

  • 问题内容: 如何使用正则表达式匹配URL,它确实决定使用相应的函数处理 问题答案: 不能用于注册模式以匹配正则表达式。简而言之,在处指定的模式可以匹配固定的,有根的路径(如)或有根的子树(如),较长的模式优先于较短的模式。您可以在该类型的文档中找到更多详细信息。 您可以做的是将您的处理程序注册到一个有根的子树,该子树可能包含该模式的所有内容,并且在您的处理程序内部,您可以进行进一步的正则表达式匹配

  • 下面是我的控制器代码: 上面的代码给了我一个例外:

  • 本文向大家介绍php中运用http调用的GET和POST方法示例,包括了php中运用http调用的GET和POST方法示例的使用技巧和注意事项,需要的朋友参考一下 使用到的函数是curl_init, curl_setopt, curl_exec,curl_close。 默认是GET方法,可以选择是否使用Header: POST方法:

  • 本文向大家介绍PHP使用stream_context_create()模拟POST/GET请求的方法,包括了PHP使用stream_context_create()模拟POST/GET请求的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用stream_context_create()模拟POST/GET请求的方法。分享给大家供大家参考,具体如下: 有时候,我们需要在服务器端模