gpt4 book ai didi

java - 检查 xhtml JSF 中的 session 访问

转载 作者:行者123 更新时间:2023-12-01 15:24:15 26 4
gpt4 key购买 nike

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

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

要进入系统,每个用户都必须登录,登录时,访问权限保存到 session 中。问题是,如何检查 servlet 文件(.xhtml)中的 session ?例如DataTable中有数据。有菜单“编辑”、“删除”和“验证”。如果管理员登录,则表行中会出现菜单“编辑、删除”,如果子管理员登录,则只出现菜单“验证”,如果受限用户登录,则不会出现该菜单。

我应该检查文件中的 servletnya session ,还是有其他方法?怎么办?

非常感谢..

最佳答案

首先,XHTML 文件不是 Servlet文件。这是Facelets文件。 Facelets 是一种基于 XML 的 View 技术。

至于您的具体问题,只需在 JSF 组件的 rendered 属性中确定即可。如果 boolean 条件的计算结果为 false,那么 JSF 将不会呈现该组件(并且在提交时也不会对其进行处理,因此您也可以安全地防止请求被篡改)。

假设登录用户是一个 User javabean,在 EL 范围内可用 #{user},并且有一个 hasRole() 方法接受一个 String 并返回一个 boolean,那么你可以这样做:

<h:commandButton value="delete" rendered="#{user.hasRole('admin')}" />

有一些变体,例如只有一个 isAdmin() 方法返回 boolean:

<h:commandButton value="delete" rendered="#{user.admin}" />

或者使用 getRoles() 方法返回 Collection:

<h:commandButton value="delete" rendered="#{user.roles.contains('admin')}" />

如果需要,您还可以使用整数 0 而不是字符串 admin,但这不太自说明。

另请参阅:

<小时/>

但请注意,您基本上是家庭种植授权。您还可以考虑使用 Java EE 内置 container managed authentication和授权。然后您可以使用 HttpServletRequest#isUserInRole()来授权用户。这很像 User#hasRole() 建议:

<h:commandButton value="delete" rendered="#{request.isUserInRole('admin')}" />

关于java - 检查 xhtml JSF 中的 session 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com