Java 在xhtml JSF中检查会话访问

Java 在xhtml JSF中检查会话访问,java,session,jsf,authorization,Java,Session,Jsf,Authorization,我正在制作一个用于资产管理的系统。系统中有三类用户:管理员、子管理员和受限用户。管理员可以做任何事情,子管理员只用于验证数据,受限用户只能查看刚刚完成的数据/查看数据 在数据库中,访问权限以数字为特征。管理员=0,子管理员=1,有限用户=2 要进入系统,每个用户必须在登录时将访问权限保存到会话中。问题是,如何在servlet文件(.xhtml)中检查会话?例如,数据表中有数据。有“编辑”、“删除”和“验证”菜单。如果管理员已登录,则“编辑,删除”菜单将显示在表行中;如果SubAdmin已登录,则

我正在制作一个用于资产管理的系统。系统中有三类用户:管理员、子管理员和受限用户。管理员可以做任何事情,子管理员只用于验证数据,受限用户只能查看刚刚完成的数据/查看数据

在数据库中,访问权限以数字为特征。管理员=0,子管理员=1,有限用户=2

要进入系统,每个用户必须在登录时将访问权限保存到会话中。问题是,如何在servlet文件(.xhtml)中检查会话?例如,数据表中有数据。有“编辑”、“删除”和“验证”菜单。如果管理员已登录,则“编辑,删除”菜单将显示在表行中;如果SubAdmin已登录,则仅显示“验证”菜单;如果受限用户已登录,则不显示该菜单

我应该在文件中检查servletnya会话,还是有其他方法?怎么做


非常感谢..

首先,XHTML文件不是文件。这是一个文件。Facelets是一种基于XML的视图技术

至于您的具体问题,只需在JSF组件的
rendered
属性中确定它。如果布尔条件的计算结果为
false
,那么JSF就不会呈现组件(也不会在提交时处理它,因此您也可以安全地防止篡改请求)

假设登录的用户是EL范围内可用的
{user}
用户
javabean,并且有一个
hasRole()
方法,该方法采用
字符串并返回
布尔值,那么您可以这样做:


也有一些变化,比如只有一个返回布尔值的
isAdmin()
方法:


或者使用
getRoles()
方法返回
集合


如有必要,您也可以使用整数
0
而不是字符串
admin
,但这样的自我记录就更少了

另见:

不过,请注意,您基本上是家庭成长授权。您还可以考虑使用java EE构建和授权。然后可以使用来授权用户。这很像
用户#hasRole()
建议:


在web应用程序中使用时,您的问题可以通过特殊标记轻松解决:

<sec:authorize ifAllGranted="ADMINISTRATOR">
    <h:commandButton value="edit" />
    <h:commandButton value="delete" />
</sec:authorize>
<sec:authorize ifNotGranted="SUBADMIN">
    <h:commandButton value="verify" />
</sec:authorize>
并将其连接到您的项目

您还可以学习其他可以使用的Spring Security的有用信息

xmlns:sec="http://www.springframework.org/security/tags"