gpt4 book ai didi

java - Spring Security 拦截 url 究竟是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 11:05:57 25 4
gpt4 key购买 nike

我正在学习 Spring Security,我发现在理解 intercept-url 的概念和回答我在学习 Material 中发现的这个问题时遇到了一些困难:

In which order do you have to write multiple intercept-url's?

因此,在我的学习 Material 中,我找到了这个实际示例:

<beans>
<security:http>
<security:intercept-url pattern="/accounts/edit*"
access="ROLE_ADMIN" />
<security:intercept-url pattern="/accounts/account*"
access="ROLE_ADMIN,ROLE_USER" />
<security:intercept-url pattern="/accounts/**"
access="IS_AUTHENTICATED_FULLY" />
<security:intercept-url pattern="/customers/**"
access="IS_AUTHENTICATED_ANONYMOUSLY" />
</security:http>
</beans>

并且规定:

intercept-urls are evaluated in the order listed: first match is used, put specific matches first.

但是究竟是什么意思呢?

所以我知道 security 命名空间的 intercept-url's 用于定义要保护的 URL(如果我断言错误,请纠正我)。

所以在前面的例子中这些 URL 是安全的:

  • /账户/编辑*
  • /账户/账户*
  • /账户/**
  • /客户/**

但是究竟是什么代表了以下访问角色?

例如,/accounts/edit* URL 指定了 access="ROLE_ADMIN"

对于 /accounts/account* URL,指定了 access="ROLE_ADMIN,ROLE_USER"

等等。究竟是什么意思?我认为这意味着,但我绝对不确定,如果用户尝试访问 /accounts/edit* 如果他尝试访问 <,则必须是管理员而不是strong>/accounts/account* 可以是管理员,也可以是普通用户。

这个解释正确还是不正确?

如果正确,我如何指定用户“属于”ROLE_ADMINROLE_USER?究竟代表什么,在哪里定义的?

intercept-urls 按列出的顺序评估的确切含义是什么:使用第一个匹配项,将特定匹配项放在首位

最佳答案

您可以任意定义角色,并为每个角色设置您喜欢的权限访问权限。

拦截 URL 需要从最具体到最不具体的顺序列出,因为如果你把最不具体的放在前面,就像这样:

pattern="/foo/bar/**"pattern="/foo/bar/baz*"

当有人导航到/foo/bar/baz 时,来自/foo/bar 的权限设置将被应用,因为它在拦截 URL 列表中首先匹配。这需要开发人员付出更多的努力,但比在列表中的每个 URL 上匹配精确的字符串要快。希望这会有所帮助。

关于java - Spring Security 拦截 url 究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com