java – Spring Securiy:允许管理员做任何事情
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring Securiy:允许管理员做任何事情,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1421字,纯文字阅读大概需要3分钟。
内容图文
![java – Spring Securiy:允许管理员做任何事情](/upload/InfoBanner/zyjiaocheng/793/4def5285c9b3479683f37c3c4efc349f.jpg)
如何在没有在每个表达式中明确提及他的情况下允许admin(具有角色ROLE_ADMIN的用户)访问所有内容?目前我将控制器的方法注释为
@PreAuthorize("(hasRole('ROLE_VENDOR') and hasPermission(#product, 'admin')) or hasRole('ROLE_ADMIN')")
但是我希望这样简单,同时允许管理员做任何事情:
@PreAuthorize("hasRole('ROLE_VENDOR') and hasPermission(#product, 'admin')")
可能吗?我怎么做?需要注意的是,对于admin,hasPermission(#product,…)被评估为false.
解决方法:
使用分层角色.
这是一个典型的配置:
<bean id="roleVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter">
<constructor-arg ref="roleHierarchy" />
</bean>
<bean id="roleHierarchy"
class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
<property name="hierarchy">
<value>
ROLE_ADMIN > ROLE_STAFF
ROLE_STAFF > ROLE_USER
ROLE_USER > ROLE_GUEST
</value>
</property>
</bean>
编辑
您可能还需要编写自定义PermissionEvaluator.如果您还没有自定义:只需扩展AclPermissionEvaluator并仅覆盖hasPermission,以便在用户具有admin角色时立即返回true;否则返回super.hasPermission(…)
像这样配置你的bean:
<security:global-method-security pre-post-annotations="enabled">
<security:expression-handler ref="expressionHandler" />
</security:global-method-security>
<bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
<property name="permissionEvaluator" ref="customPermissionEvaluator" />
...
</bean>
内容总结
以上是互联网集市为您收集整理的java – Spring Securiy:允许管理员做任何事情全部内容,希望文章能够帮你解决java – Spring Securiy:允许管理员做任何事情所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。