当前位置: 首页 > 知识库问答 >
问题:

Spring security自定义错误消息未显示

上官恩
2023-03-14

我使用的是关于这个链接的教程:

http://www.mkyong.com/spring-security/display-custom-error-message-in-spring-security/

在登录表单上显示一个自定义错误消息,我在开始时就得到了它。但是在为自定义失败身份验证器处理程序声明authentication-failure-handler-ref=“myautherrorhandler”之后,我无法在登录表单上看到自定义消息:

我做错了什么?谁能解释一下发生了什么,为什么“无效的用户名或密码”没有显示?

代码如下:

AuthentificationListener

public class AuthentificationListener implements AuthenticationFailureHandler {

@Override
public void onAuthenticationFailure(HttpServletRequest request,
        HttpServletResponse response, AuthenticationException ae)
        throws IOException, ServletException {

    UsernamePasswordAuthenticationToken user = (UsernamePasswordAuthenticationToken) ae
            .getAuthentication();


    /* User */


    response.sendRedirect(request.getContextPath()
            + "/abc/main/loginfailed");

}

}

ApplicationContext.xml:

    <bean id="myAuthErrorHandler" class="org.abc.handler.AuthentificationListener"/>
    <http auto-config="true">
    <intercept-url pattern="/abc/main/welcome*" access="ROLE_USER" />
    <intercept-url pattern="/abc/main/record/**" access="ROLE_USER" />

    <form-login 

    login-page="/abc/main/login" 

    authentication-failure-handler-ref="myAuthErrorHandler" 

    default-target-url="/abc/main/welcome"

    />


    <logout logout-success-url="/abc/main/logout" />

</http>
        <c:if test="${not empty error}">
        <div class="errorblock">
            Your login attempt was not successful, try again.<br /> Caused :
            ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
        </div>

    </c:if>
    @RequestMapping(value="/loginfailed", method = RequestMethod.GET)
public String loginerror(ModelMap model) {

    model.addAttribute("error", "true");
    return "login";

}
${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}

知道吗?非常感谢!

共有1个答案

仇承志
2023-03-14

当身份验证失败时,您已要求重定向到不同的页面。

 response.sendRedirect(request.getContextPath()
        + "/abc/main/loginfailed");

您的loginfailed jsp未显示?登录页面中没有errorblock之类的div?您在loginfailed.jsp中看到不同的错误了吗?

编辑:

 类似资料:
  • 我有自定义的消息onbeforeunload事件和工作良好,但我注意到今天它不再显示我的消息。相反,它显示“可能不会保存您所做的更改” 谁能告诉我如何修理它吗?

  • 安全测试人员声称,我应该清理返回的JSON(即转义这些符号),因为这可能会给旧的浏览器带来一些问题(即在浏览器中执行此JS代码)。 但是生成错误消息的是SpringBoot框架, 我在这里没有太多的控制权。 当然,我可以将参数定义为String,并自己进行验证,但我怀疑这是否是正确的方法。我的参数定义为Integer,我希望它保持这种方式。 做这件事最简单的方法是什么?

  • 我们使用Spring Security OAuth2保护我们的REST服务(用于服务器到服务器通信,不涉及用户)。但是,当您尝试访问浏览器中的受保护资源时,它将显示: 我们希望这是我们自己选择的自定义页面。有办法吗? 设置“拒绝访问”页面不起作用。首先,它需要定义一个登录页面,我们没有,因为这是一个纯服务器到服务器的通信。另一个原因是,这个属性自Spring 3.0..或类似的版本以来就被弃用了。

  • 我有这个代码,其中数据被定义,就我所能看到的,这些是我得到的错误: 遇到PHP错误 严重性:通知 消息:未定义变量:empdata 文件名:视图/employee.php 电话号码:51** 回溯: 文件:C:\xampp\htdocs\providentfund\application\views\employee。php行:51函数:\u错误\u处理程序 File: C:\xampp\htdo

  • 如何在wordpress忍者表单插件中显示自定义错误消息。我已经搜索了忍者表格文件,但无法到达网站。默认情况下,错误消息显示为 我希望它是 提前道谢。

  • 我已经找到了一些答案,但我的问题仍然没有解决。 我刚刚制作了一个新的应用程序,发现注册页面上的错误消息根本没有显示出来。以下是我在本网站上找到的一些答案: 只需删除,'中间件'= 或 \照明\会话\中间件\开始会话::class,\照明\视图\中间件\ShareErrs From会话::class, 从受保护的$middlewareGroup到karnel中受保护的$middleware中间件。p