gpt4 book ai didi

jakarta-ee - java中j_security_check完成身份验证后如何触发Bean

转载 作者:行者123 更新时间:2023-12-04 05:09:48 31 4
gpt4 key购买 nike

我对java网页环境很陌生。最近尝试用Java开发一个电子商务平台。

因此,我使用 j_security_check 基于表单作为我的身份验证工具。身份验证完成后,成功重定向到所需页面。

但是,由于我必须从数据库(MS SQL 2005)加载最终用户设置和信息,所以我必须在身份验证完成后和页面重定向之前加载所有信息。

我曾尝试过使用primefaces 的一些方法,但它无法触发加载用户信息的bean 方法。

我尝试过的方法之一是使用 oncomplete 来触发 bean 方法

<h:form id="login" prependId="false"
onsubmit="document.getElementById('login').action='j_security_check';">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel for="j_username" value="Username:" />
<p:inputText value="#{loginBean.username}"
id="j_username" required="true" label="j_username" />
<h:outputLabel for="j_password" value="Password:" />
<h:inputSecret value="#{loginBean.password}"
id="j_password" required="true" label="j_password" />
<f:facet name="footer">
<p:commandButton id="loginButton" value="Login" type="submit" ajax="false"
oncomplete="#{loginBean.login()}"/>
</f:facet>
</h:panelGrid>
</h:form>

我也尝试过类似的东西,只是将 oncomplete 更改为 onclick 和其他。最终没有任何可行的方法。

因此,我希望你们中的任何人都可以给我建议我应该如何克服这个问题。

万感谢,

最佳答案

对此有几种解决方案。

  • 创建一个 servlet 过滤器来检查远程用户和 User 的存在。 session 中的实体。如果远程用户不是 null ,但 User实体是,然后从数据库加载它并在 session 中设置它。在这里具体回答:Accessing user details after logging in with Java EE Form authentication
  • 在 session 作用域 bean 的 getter 中执行延迟加载,它应该返回 User实体。这在本答案的第一部分中有具体回答:Performing user authentication in Java EE / JSF using j_security_check
  • 使用真正的 JSF bean 操作方法执行程序化登录并获得 User实体直接。这在本答案的第二部分中有具体回答:Performing user authentication in Java EE / JSF using j_security_check


  • 无关 对于具体问题,您应该使用 <form action="j_security_check" method="post">而不是 <h:form prependId="false"> .然后你也不需要那个讨厌的 JS hack 来改变表单的 Action 。

    关于jakarta-ee - java中j_security_check完成身份验证后如何触发Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15022473/

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