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