使用apache shiro对JSF结果进行权限检查

时间:2014-11-25 15:55:14

标签: security jsf-2 jsf-2.2 shiro

我有一个基于JSF2的网络应用程序,使用Apache Shiro保护。在我的应用程序中,我有一些像

这样的链接
<h:link outcome="someOutcome" value="my Link"/>

之类的动作链接
<h:commandLink action="#{myBean.someAction}" value="my Action" />

JSF结果&#34; someOutcome&#34;可能在JSF导航规则中配置为重定向到/some/url.xhtml

我的shiro配置(shiro.ini)包含相应网址的条目:

/some/url.xhtml = perms[someRight]

我的支持bean myBean注释如下:

@Named
@ConversationScoped
public class MyBean {
    @RequiresPermissions('someRight')
    public String someAction()
    {
        // do something
        return null;
    }
}

如果当前用户的权限不足,我现在的要求是禁用链接。

当然,我可以在disabled="#{subject.isPermitted('someRight')}" / <h:link>组件中添加<h:commandLink>之类的内容,但这样我会复制已经通过shiro.ini分别提供注释的配置

我正在考虑像

这样的事情
<h:link outcome="someOutcome"
        disabled="#{security.isOutcomeAllowed('someOutcome')}"
        value="my Link" />

我可以在复合组件中包装,只指定someOutcome一次。但security - 豆怎么样?或者这是错误的做法?

有没有人知道实现目标的聪明方法?

0 个答案:

没有答案