【发布时间】:2016-05-09 11:52:22
【问题描述】:
我在前面使用 spring 4 + hibernate 4 + spring security (RESTFull Webservice API) 和 angular。 (这一切都很新)。
我的失败处理程序如下:
@Component
public class AuthFailure extends SimpleUrlAuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
}
如果我的请求失败,我会得到预期的 401 响应。现在我想添加 AccountLocked 和 CredentialsExpiredException 功能。当我返回“用户”时,我正在适当地设置“假”。我再次收到状态为 401 的响应。
return new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, AuthorityUtils.NO_AUTHORITIES);
由于我总是得到 401 并且我没有在响应中得到任何用户对象(或者可能不知道如何获取它),在前端我无法找到它是否是由于凭据错误或帐户被锁定或凭据已过期,因为我想重定向到另一个页面。我还尝试捕获异常并尝试转发不同的状态,但似乎没有命中此代码。我总是得到 401。
@ExceptionHandler(LockedException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ModelAndView handleLockedException(Exception e) {
logger.error("Exception occurred => " + e.getMessage());
return new ErrorResponse(HttpStatus.BAD_REQUEST.value(), e.getMessage(), "Spring security exception").asModelAndView();
}
请帮助我 - 我应该如何处理角端,以便我可以重定向到适当的页面?
【问题讨论】:
标签: angularjs spring spring-security