【发布时间】:2012-07-30 05:14:31
【问题描述】:
我想根据自定义 url 参数(路径变量)创建安全规则。 例如。假设我想让用户对名为 Brand1 和 Brand2 的资源具有管理员访问权限,但无权访问名为 Brand3 的资源。我们可以使用以下链接编辑资源。
http://myapp/brand/edit/1
http://myapp/brand/edit/2
http://myapp/brand/edit/3
现在在安全环境中我想做类似的事情
<security:intercept-url pattern="/brand/edit/{brandId}"
access="hasRole('ROLE_ADMIN') or
@authorizationService.hasBrandPermission(
#brandId, principal.username)"/>
我唯一得到的是用户名。 BrandId 始终为空。 我曾经使用 @PreAuthorize 来做到这一点并且它有效,但现在我想将安全配置集中在单个 xml 文件中,而不是将其分布在所有控制器类中。此外,当我使用 @PreAuthorize 时,我的 access-denied-handler 并没有将我重定向到拒绝页面,而是显示丑陋的 AccessDeniedException insead。
我真的很欣赏任何想法。
【问题讨论】:
-
我不明白这个问题。 BrandId 是否始终为空?还是它不保护资源?还是丑陋的 AccessDeniedException 页面?
标签: java spring jakarta-ee spring-mvc spring-security