【发布时间】:2015-06-10 02:55:15
【问题描述】:
我正在学习 Spring Security,我发现在理解 intercept-url's 概念和回答我在学习资料中找到的这个问题时遇到了一些困难: p>
你必须按什么顺序编写多个拦截网址?
所以,在我的学习资料中,我找到了这个实际的例子:
<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>
并规定:
拦截网址按列出的顺序进行评估:使用第一个匹配项, 把特定的匹配放在第一位。
但究竟意味着什么?
所以我知道 security 命名空间的 intercept-url's 用于定义要保护的 URL(如果我断言错误,请纠正我)。
因此,在前面的示例中,这些 URL 是安全的:
- /accounts/编辑*
- /accounts/account*
- /accounts/**
- /customers/**
但是,以下访问角色的具体代表是什么?
例如,/accounts/edit* URL 被指定为 access="ROLE_ADMIN"
对于 /accounts/account* URL 指定 access="ROLE_ADMIN,ROLE_USER"
等等。究竟是什么意思?我认为这意味着,但我绝对不确定,如果用户尝试访问 /accounts/edit* 它必须是管理员而不是如果他尝试访问 /accounts/account* 可以是管理员,也可以是普通用户。
这种解释是正确的还是不正确的?
如果正确,如何指定用户“属于”ROLE_ADMIN 还是ROLE_USER?究竟代表什么,在哪里定义?
拦截网址按列出的顺序进行评估究竟意味着什么:使用第一个匹配项,首先放置特定匹配项?
【问题讨论】:
-
角色本身是由您定义的——您可以创建任意数量的角色,并且可以给他们任何您想要的名称。然后,您可以指定每个角色可以做什么或不能做什么。关于“拦截网址按列出的顺序进行评估:使用第一个匹配项,首先放置特定匹配项?”,我真的不确定它应该是什么意思:)
标签: java spring spring-mvc spring-security