首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于JSF授权的建议

关于JSF授权的建议
EN

Stack Overflow用户
提问于 2011-08-12 16:44:39
回答 2查看 1.6K关注 0票数 1

我学习了如何在JDBC领域中使用容器身份验证。我在互联网上搜索了很多,但除了下面这篇文章之外,我找不到任何关于JSF授权的东西。JSF authorization

我的目标是避免使用直接链接访问受保护的页面,并根据经过身份验证的用户权限显示/隐藏菜单项和表单组件。最后一部分可以使用JSF标记的呈现属性来实现,但是在创建我自己的脏的、高耦合的解决方案之前,我想知道是否有一些特定的最佳实践或库可以提供帮助。事实上,要有条件地呈现的组件的数量相当多,我不想为每个组件编写特定的函数。也许我可以为每个经过身份验证的用户创建一个map,其中包含所有有条件呈现的组件的名称(id),以及一个带有字符串参数(组件的惟一名称/id)的函数。这是个好主意吗?我还有其他选择吗?我不想在项目中添加其他通用框架,比如spring,只使用其中的一小部分(安全框架)。

谢谢Filippo

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-12 17:01:23

对于Java EE 6中的表达式语言版本,您应该能够使用如下表达式:

代码语言:javascript
复制
<h:inputText rendered="#{facesContext.externalContext.isUserInRole('foo')}" />

对于旧版本,您可以创建以下形式的托管bean:

代码语言:javascript
复制
public class RoleMap implements Map<String, Boolean> {

    public Boolean get(Object key) {
        ExternalContext extCtxt = FacesContext.getCurrentInstance()
                                              .getExternalContext();
        return extCtxt.isUserInRole(key.toString());
    }

    //TODO: other methods; mostly throwing UnsupportedOperationException

然后,测试可以是以下形式的表达式:

代码语言:javascript
复制
<h:inputText rendered="#{roleMap['foo']}" />

第三方框架提供了其他选项,比如Apache Tomahawk库的visibleOnUserRole组件属性。

票数 2
EN

Stack Overflow用户

发布于 2011-08-12 16:47:22

看看Apache Shiro,一个专用的安全框架(应该比Spring security更容易使用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7037642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档