可以使用 Shiro 设置 JSF 页面级别权限吗

Posted

技术标签:

【中文标题】可以使用 Shiro 设置 JSF 页面级别权限吗【英文标题】:Can a JSF Page level permission be set using Shiro 【发布时间】:2012-09-28 07:50:57 【问题描述】:

我只是想知道我们在 Shiro 中是否有页面级别的权限设置?例如,我有一个 jsf 页面,我只想在具有人员角色和删除权限的用户中显示。

在 JBoss 中我们有类似的东西:

<page xmlns="http://jboss.com/products/seam/pages"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd">
    <restrict>#persistentPermissionResolver.hasPermission('staff','delete')</restrict>
</page>

这个功能在 JavaEE6 + Shiro + JSF 中也可用吗? JSP 和 JSF 插件似乎只支持让具有特定权限的特定角色可以访问网页的特定部分。

谢谢, 切苏亚

【问题讨论】:

【参考方案1】:

如果您将项目配置为使用 Shiro annotation not working on JavaEE6 project 中回答的 Shiro 注释,那么您应该能够通过将所需的 Shiro 注释放在请求范围托管 bean 的类级别来设置页面级别限制。

@Named
@RequestScoped
@ShiroSecured
@RequiresPermissions("staff:delete")
public class SomeBean 
    // ...

【讨论】:

【参考方案2】:

在摆弄了一段时间后,我得出结论,拥有与 Seam 相同的功能是不可能的,但 Apache Shiro 通过权限提供了相同的细粒度控制。您可以在其中控制谁访问/访问什么。至于我如何将 Apache Shiro 与 JavaEE6 集成,我是这样做的:http://czetsuya-tech.blogspot.com/2012/10/how-to-integrate-apache-shiro-with.html

【讨论】:

以上是关于可以使用 Shiro 设置 JSF 页面级别权限吗的主要内容,如果未能解决你的问题,请参考以下文章

将 PrimeFaces 与 JSF 一起使用时 Shiro 重定向到错误的位置

JSF 2 + Spring 3 + Shiro - 会话超时不重定向到登录页面

Shiro后台实现验证权限

如何在 Apache Shiro 中定义属性级权限

在与 JSF 和 Apache Shiro 的 Ajax 交互中处理身份验证

shiro 怎么自动实现对路径权限的分配