j_security_check仅适用于新页面

时间:2014-10-13 15:40:55

标签: java jsp security jboss jaas

我们有j_security登录表单,仅适用于新页面。表示没有历史记录,以前没有登录,也没有登录失败。如果页面是新鲜的并且用户输入了错误的密码,则会显示正确的错误。但是当用户输入正确的密码后,会出现HTTP Status 400 - Invalid direct reference to form login page并暂停登录,直到浏览器的历史记录被清除并重新加载页面。

HTTP 400

以下是登录的代码。 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>

请帮助我们找到这个问题的答案!谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您不应该直接访问web.xml中指定为登录页面的页面。此登录页面是一个特殊页面,用户在尝试访问安全资源时将被重定向到该页面,但他尚未登录。

如果您需要直接访问登录页面或在不受保护的页面中显示登录表单,您可以在servlet,manage bean(jsf)等中实现编程登录。

Using Programmatic Security with Web Applications