gpt4 book ai didi

jsf - j_security_check 直接调用

转载 作者:行者123 更新时间:2023-12-04 17:36:37 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,我希望主页包含一个登录表单和其他数据。如果用户选择登录,他应该被重定向到另一个页面(例如 login_success.jsp)。我的问题是:我可以使用 j_security_check 机制登录还是唯一的方法是使用托管 bean 来处理登录?

我的主页是这样的:

....
<form action="j_security_check" method="POST" name="loginForm">
<h:panelGrid columns="2">
<h:outputLabel id="userNameLabel" for="j_username" value="#{label.home_username}:" />
<h:inputText id="j_username" autocomplete="off" />
<h:outputLabel id="passwordLabel" for="j_password" value="#{label.home_password}:" />
<h:inputSecret id="j_password" autocomplete="off" />

<h:panelGroup>
<h:commandButton type="submit" value="Login" />
<h:commandButton type="reset" value="Clear" />
</h:panelGroup>
</h:panelGrid>
</form>
...

如果我按下登录按钮,我会得到 -> HTTP 状态 400 - 对表单登录页面的直接引用无效。很明显,j_security_check 机制不知道在哪里“重定向”,因为我之前没有请求 protected 资源。

最佳答案

HTTP Status 400 - Invalid direct reference to form login page.


这意味着您手动打开了 <form-login-page>在不允许的情况下通过直接请求。

and it's obvious, j_security_check mechanism doesn't know where to "redirect", since I didn't request a protected resource before.


这不是错误试图告诉你的。

将登录页面放在 /WEB-INF文件夹以防止可能的直接访问。然后,要触发登录,只需直接请求受限资源即可。如有必要,容器将自动显示登录页面。
或者,如果您没有仅限受限的资源(即登录仅显示更多选项/功能,例如在论坛中),则不要使用 <form-login-page> ,而是一个带有调用 HttpServletRequest#login() 的支持 bean 的 JSF 表单。 .
也可以看看:
  • Performing user authentication in Java EE / JSF using j_security_check
  • 关于jsf - j_security_check 直接调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751724/

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