首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于j_security_check表单的身份验证上的错误重定向

基于j_security_check表单的身份验证上的错误重定向
EN

Stack Overflow用户
提问于 2018-04-20 20:26:51
回答 1查看 1.1K关注 0票数 1

在用户输入错误的用户名/密码后,我通过重定向到错误页面来处理此问题。在我的例子中,错误页面与登录页面相同,但是我传递了参数wrongCredentials,这样我就可以在显示错误用户名/密码消息的jsf页面中呈现特殊的块。如果用户现在输入了正确的凭据检查,而不是被重定向到源页面,他将被重定向到*/j__check,并使用GET和GET404 not found。

我发现有趣的是,当输入错误的凭据时,浏览器中的url不会更改为*/login.xhtml?wrongCredentials=true,而是更改为*/j_security_check,但呈现的页面登录时会显示有关错误凭据的正确错误消息。

这是我的web.xml

代码语言:javascript
复制
<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/login.xhtml?wrongCredentials=true</form-error-page>
    </form-login-config>
</login-config>

下面是登录页面表单:

代码语言:javascript
复制
<form id="login_form" name="login_form" action="j_security_check" method="post">
                                <table>
                                    <tbody>
                                    <tr>
                                        <td><input type="text" id="username" name="j_username" placeholder="Username"/></td>
                                    </tr>
                                    <tr>
                                        <td><input type="password" id="password" name="j_password" placeholder="Password"/></td>
                                    </tr>
                                    <tr>
                                        <td><input type="submit" value="login" class="btnBlue"/></td>
                                    </tr>
                                    </tbody>
                                </table>
                                <p:panel rendered="${param['wrongCredentials'] != null}" styleClass="wrongPasswordPanel">
                                    <h:outputText value="Wrong username or password" styleClass="wrongPasswordTxt"/>
                                </p:panel>
                                <p:panel styleClass="forgotPasswordPanel">
                                    <h:outputText value="Forgot password? Please, contact " styleClass="wrongPasswordTxt"/><a href="mailto:support@support.com" class="wrongPasswordTxt">support@support.com</a>
                                </p:panel>

我曾尝试实现一个自定义过滤器来拦截GET请求的*/j_security_check,但过滤器是在j_security_check之后加载的。

我正在运行WildFly10。

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 19:43:00

在我的例子中,我得到了严重的重定向错误,因为我在https://localhost:8181/中测试我的应用程序……服务器尝试重定向到https://0.0.0.0.0.0.0.1:8181/...它被认为是等同于127.0.0.1的IPv6 (查看'location‘http响应报头)。

浏览器无法理解该IP并引发错误。

我所做的变通办法是使用我的实际主机名而不是'localhost‘进行测试,例如https://myhostname:8181/...在这种情况下,服务器将主机名保留在location标头中,而不是将其转换为IPv6。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49941638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档