gpt4 book ai didi

java - 无需 protected 资源的 JSF/Java EE 登录

转载 作者:行者123 更新时间:2023-11-30 11:38:30 25 4
gpt4 key购买 nike

在使用容器管理的安全性的 JSF2/Java EE 6 Web 应用程序中,基于表单的身份验证 (j_security_check) 需要请求 protected 页面,之后容器为您处理登录过程,将浏览器重定向到请求的页面页面一旦通过身份验证。

在许多常见场景中,这不是您希望应用程序的行为方式。例如,您可能希望同一页面有一个只读版本和一个可更新版本。如果用户未登录,您可以在该页面上放置一个“立即登录以编辑”按钮,如果用户已登录,则可以使字段可编辑。但是在这两种情况下它都是相同的 JSF 页面,并且该 View 不能不 protected 和 protected ,因此 j_security_check 似乎无法处理这种情况。

那么,两个问题:

1) 可以操纵 j_security_check 来实现此功能吗?或者2) 如果 j_security_check 不能,JSF/JavaEE webapps 实现这个的“正常”方式是什么?

最佳答案

登录用户也可以在不安全的页面中使用。您可以通过检查 HttpServletRequest#getRemoteUser() 的存在来执行登录检查。和 HttpServletRequest#isUserInRole() 的角色检查并相应地渲染受限组件。

例如,仅当用户未登录时显示“登录以编辑”按钮:

<h:commandButton 
value="Login to edit" action="#{auth.login}"
rendered="#{empty request.remoteUser}" />

并且仅当用户登录或具有所需角色时才显示“编辑”按钮:

<h:commandButton 
value="Edit" action="#{someBean.edit(someItem)}"
rendered="#{not empty request.remoteUser}" />
<!-- or -->
<h:commandButton
value="Edit" action="#{someBean.edit(someItem)}"
rendered="#{request.isUserInRole('ADMIN')}" />

关于java - 无需 protected 资源的 JSF/Java EE 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605277/

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