gpt4 book ai didi

spring - Spring Security 中的安全注解

转载 作者:行者123 更新时间:2023-12-01 09:35:14 26 4
gpt4 key购买 nike

我正在尝试在 Spring Security 中配置安全注释。但我有一个关于这个的问题-

....
<security:http auto-config="true" use-expressions="true">
....

当我使用时

@Secured("CUSTOM_ACCESS")
public String query();

它不起作用。但是我用

@PreAuthorize("hasRole('CUSTOM_ACCESS')")
public String query();

它可以正常工作并应用相关角色。这是否意味着@Secured 注解不适用于@PreAuthorize?

我也试过添加

   <security:global-method-security secured-annotations="enabled" />

但这并没有帮助。

   <security:global-method-security pre-post-annotations="enabled" />

上述配置工作正常。有什么想法吗?

最佳答案

首先,use-expressions在您的 <http> 中设置元素对方法安全注释没有影响。这些是使用 global-method-security 启用的。 .

使用

   <security:global-method-security pre-post-annotations="enabled" />

将启用 PreAuthorize及其相关注释。当您启用安全注释时,安全注释不起作用的原因是没有选民知道 CUSTOM_ACCESS方法。在其默认设置中,Spring Security 的 RoleVoter仅使用以前缀 ROLE_ 开头的属性.见 this FAQ了解更多信息。

选民可以用于检查简单角色以外的其他事情,因此他们通常需要某种方式来确定为方法配置的哪些属性适用于他们。基于表达式的注释与标准选民的运作方式不同。 hasRole表达式只是查找分配给用户的命名权限。

因此,如果您创建了 AccessDecisionManager为了方法安全,使用 AccessDecisionVoter这会消耗您的 CUSTOM_ACCESS属性然后 @Secured注释会产生影响。然而,既然你有它使用 PostAuthorize你可能只想坚持下去。

关于spring - Spring Security 中的安全注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9237138/

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