我们有j_security
登录表单,仅适用于新页面。表示没有历史记录,以前没有登录,也没有登录失败。如果页面是新鲜的并且用户输入了错误的密码,则会显示正确的错误。但是当用户输入正确的密码后,会出现HTTP Status 400 - Invalid direct reference to form login page
并暂停登录,直到浏览器的历史记录被清除并重新加载页面。
以下是登录的代码。 Dropdown.getXML
根据开发环境更改网址。在这种情况下,它将其更改为正确的开发。
<form id="login" name="j_security_form" action="<%out.write(Dropdown.getXML("https://www.example.com/public/j_security_check")); %>" method="post" accept-charset="UTF-8">
<strong>Account Login</strong><br>
Username:<br>
<input type="text" name="j_username"><br>
Password:<br>
<input type="password" name="j_password"><br>
<br>
<input type="submit" value="Login"><br>
<br>
New users <a href="../user_registration.jsp">register here</a><br>
<a href="../forgot_password.jsp">Forgot password?</a>
<input type="hidden" name="auth_mode" value="basic">
<script>
var newloc = document.location.href;
newloc =newloc.replace('index.jsp','index.jsp');
document.write('<input type="hidden" name="orig_url" value="'+newloc+'">');
</script>
</form>
请帮助我们找到这个问题的答案!谢谢你的帮助。
答案 0 :(得分:0)
您不应该直接访问web.xml
中指定为登录页面的页面。此登录页面是一个特殊页面,用户在尝试访问安全资源时将被重定向到该页面,但他尚未登录。
如果您需要直接访问登录页面或在不受保护的页面中显示登录表单,您可以在servlet,manage bean(jsf)等中实现编程登录。