我正在使用Spring安全性對用戶進行身份驗證。我創建了一個自定義身份驗證提供程序,現在我想知道如何從提供程序中將錯誤消息導入到我的表單中。這是我的自定義身份驗證提供者的身份驗證()方法:在Spring登錄中顯示錯誤消息
@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>
我怎麼會得到錯誤信息到我的形式?從我按下登錄按鈕的那一刻起,Spring就接管了,所以唯一可以生成錯誤消息的方法是authenticate()方法...
即使在我爲每個取消引用的變量添加檢查之後,我在JSP中使用此解決方案時有很多'NullPointerException'。所以我找到了一個更好的解決方案,並將其作爲我自己的答案發布。 – vadipp