不再需要Spring Security ROLE_ prefix了吗?

tag5nh1u  于 2023-06-23  发布在  Spring
关注(0)|答案(1)|浏览(113)

我一直在研究如何创建自定义角色前缀,直到我意识到这并不重要。只要我的数据库中的角色匹配如下内容:

<security:intercept-url pattern="/person/myProfile/**" access= "hasRole('BlaBla')" />

这不是一个例子,在数据库中,我真的设置了BlaBla角色来测试,它工作正常。
我不喜欢当我得到不同的行为-许多人有问题的设置自定义前缀创建自定义角色。这里发生了什么,我应该期待隐藏的岩石吗?
我有3.0.7版本在查询权限时,我没有“默认”值。是版本造成的吗?

a9wyjsp7

a9wyjsp71#

你可能正在使用:

<http use-expressions="true">

配置WebExpressionVoter,它将为具有授权“BlaBla”的用户投票为真(在您的情况下)
请记住,安全对象(例如URL)的授权是由AccessDecisionManager执行的。
有三个具体的AccessDecisionManagers:是的,一致同意和全体一致。
为了做出决定,他们使用AccessDecissionVoters列表。
RoleVoter,您所期望的,具有rolePrefix可配置(默认情况下为ROLE_),AuthenticatdVoter和新的WebExpressionVoter。
不要忘记AccessDecissionManager和它的Voters的组合可以以一种您认为不合逻辑的方式允许或拒绝权限。
我建议您调试请求,以查看URL和模式是否与预期匹配。

相关问题