我有一个基于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
- 豆怎么样?或者这是错误的做法?
有没有人知道实现目标的聪明方法?