gpt4 book ai didi

java - 具有路径变量参数的 Spring Security

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:08 25 4
gpt4 key购买 nike

我想根据自定义 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 文件中集中安全配置而不是将它分布在所有 Controller 类中。此外,当我使用@PreAuthorize 时,我的拒绝访问处理程序没有将我重定向到被拒绝的页面,而是显示丑陋的 AccessDeniedException insead。

我真的很感激任何想法。

最佳答案

pom.xml 中的 Spring Security 版本更改为 4.1.0.RELEASE:

<spring-security.version>4.1.0.RELEASE</spring-security.version>

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring-security.version}</version>
</dependency>

之后您可能需要清理您的 Maven 项目。

(我知道,这是一个老问题。尽管如此,我在 3 年后遇到了同样的问题)。

关于java - 具有路径变量参数的 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757032/

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