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

在Spring登录中显示错误消息

楚知
2023-03-14
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
    UserProfile profile = userProfileService.findByEmail(authentication.getPrincipal().toString());

    if(profile == null){
        throw new UsernameNotFoundException(String.format("Invalid credentials", authentication.getPrincipal()));
    }

    String suppliedPasswordHash = DigestUtils.shaHex(authentication.getCredentials().toString());

    if(!profile.getPasswordHash().equals(suppliedPasswordHash)){
        throw new BadCredentialsException("Invalid credentials");
    }

    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(profile, null, profile.getAuthorities());

    return token;
}
<form name='f' action="<c:url value='j_spring_security_check' />" method='POST'>
<div id="data-entry-form">

    <div class="form-entry">
        <label><spring:message code="login.form.label.email"/></label>
        <input type='text' name='j_username' value=''>
    </div>
    <div class="form-entry">
        <label><spring:message code="login.form.label.password"/></label>
        <input type='password' name='j_password'/>
    </div>
    <div class="form-entry">
        <input type="submit" value="Verzenden"/>
    </div>
</div>

共有1个答案

澹台啸
2023-03-14

最安全方法的3个步骤(我们不依赖LAST_EXCEPTION):

>

  • 在自定义身份验证提供程序的配置中指定错误页(例如“login-error”)

    httpSecurity
    .authorizeRequests()
    .antMatchers("/css/**", "/js/**", "/img/**").permitAll()
    .anyRequest().fullyAuthenticated()
    .and()
    .formLogin().loginPage("/login").permitAll()
    .failureUrl("/login-error")
    .and()
    .logout().permitAll()
    

    Create controller for url/login-返回自定义登录页视图(例如“login”)的错误,并返回下一段代码:

    @Controller
    public class LoginController {
    
        @GetMapping("/login-error")
        public String login(HttpServletRequest request, Model model) {
            HttpSession session = request.getSession(false);
            String errorMessage = null;
            if (session != null) {
                AuthenticationException ex = (AuthenticationException) session
                        .getAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);
                if (ex != null) {
                    errorMessage = ex.getMessage();
                }
            }
            model.addAttribute("errorMessage", errorMessage);
            return "login";
        }
    }
    
    <!--/*@thymesVar id="errorMessage" type="java.lang.String"*/-->
    <div class="alert" th:if="${errorMessage}" th:text="${errorMessage}"></div>
    

  •  类似资料:
    • 问题内容: 我正在使用Spring Security。我想显示登录错误消息,例如登录失败或帐户被锁定。如何在登录页面上显示此类消息? 问题答案: 只需配置为,然后从该servlet设置属性即可,例如 并将此请求转发到登录页面。 或提供 如 检查jsp上的参数 并有条件地打印消息

    • 我开发了一个应用程序。现在我正在尝试将twitter集成到我的应用程序中。我的问题是当我登录应用程序时,它会显示"at。 请任何人帮我谢谢... 当我尝试登录我得到了这个错误:

    • 所以我想尝试在登录页面上显示“无效用户名或密码”的错误信息,每当用户得到他们是错误的。 到目前为止,我只是将它记录在控制台中,在那里我看到错误:“auth/invalce-email”,其消息属性是:“电子邮件地址格式化得很糟糕。”当输入错误的电子邮件时(密码也是如此)。有什么方法可以在我的singin组件的html中的ngIf div元素中显示这些(或者更确切地说是自定义消息“无效的用户名或密码

    • 我正在尝试为wordpress开发一个登录ajax表单。这个插件似乎工作得很好。如果我插入了正确的用户名和密码,登录将正常工作并显示正确的消息,然后重定向到正确的页面,但是如果我插入了错误的用户名和密码值,则不会发生任何情况,错误消息也不会出现。 似乎该函数是_wp_error,不回显该错误。 你知道为什么吗?低于我的代码 感谢在adv. PHP 超文本标记语言 JS

    • 我正在尝试用spring显示一个报告PDF,我终于得到了它,但是问题出现在我的代码中有一个异常或错误的时候。在这种情况下,我想在我的应用程序中显示特殊的消息。sping控制器返回一个带有文件pdf的ResponseEntity和一个http状态代码。