提交 9947000c 编写于 作者: zlt2000's avatar zlt2000

优化授权码模式的登录错误响应

上级 b45f3c85
...@@ -18,7 +18,6 @@ import org.springframework.security.config.http.SessionCreationPolicy; ...@@ -18,7 +18,6 @@ import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.logout.LogoutHandler; import org.springframework.security.web.authentication.logout.LogoutHandler;
...@@ -37,8 +36,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -37,8 +36,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
private AuthenticationSuccessHandler authenticationSuccessHandler; private AuthenticationSuccessHandler authenticationSuccessHandler;
@Autowired
private AuthenticationFailureHandler authenticationFailureHandler;
@Autowired(required = false) @Autowired(required = false)
private AuthenticationEntryPoint authenticationEntryPoint; private AuthenticationEntryPoint authenticationEntryPoint;
...@@ -82,7 +79,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -82,7 +79,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.loginPage(SecurityConstants.LOGIN_PAGE) .loginPage(SecurityConstants.LOGIN_PAGE)
.loginProcessingUrl(SecurityConstants.OAUTH_LOGIN_PRO_URL) .loginProcessingUrl(SecurityConstants.OAUTH_LOGIN_PRO_URL)
.successHandler(authenticationSuccessHandler) .successHandler(authenticationSuccessHandler)
.failureHandler(authenticationFailureHandler)
.and() .and()
.logout() .logout()
.logoutUrl(SecurityConstants.LOGOUT_URL) .logoutUrl(SecurityConstants.LOGOUT_URL)
......
package com.central.oauth.config; package com.central.oauth.config;
import com.central.common.utils.ResponseUtil;
import com.central.oauth.handler.OauthLogoutHandler; import com.central.oauth.handler.OauthLogoutHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.InternalAuthenticationServiceException; import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.common.exceptions.*; import org.springframework.security.oauth2.common.exceptions.*;
import org.springframework.security.oauth2.provider.error.DefaultWebResponseExceptionTranslator; import org.springframework.security.oauth2.provider.error.DefaultWebResponseExceptionTranslator;
import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator; import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import javax.annotation.Resource;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -32,25 +26,6 @@ import java.io.IOException; ...@@ -32,25 +26,6 @@ import java.io.IOException;
@Slf4j @Slf4j
@Configuration @Configuration
public class SecurityHandlerConfig { public class SecurityHandlerConfig {
@Resource
private ObjectMapper objectMapper;
/**
* 登陆失败,返回401
*/
@Bean
public AuthenticationFailureHandler loginFailureHandler() {
return (request, response, exception) -> {
String msg;
if (exception instanceof BadCredentialsException) {
msg = "密码错误";
} else {
msg = exception.getMessage();
}
ResponseUtil.responseWriter(objectMapper, response, msg, HttpStatus.UNAUTHORIZED.value());
};
}
@Bean @Bean
public OauthLogoutHandler oauthLogoutHandler() { public OauthLogoutHandler oauthLogoutHandler() {
return new OauthLogoutHandler(); return new OauthLogoutHandler();
......
package com.central.oauth.filter; package com.central.oauth.filter;
import com.central.common.constant.SecurityConstants; import com.central.common.constant.SecurityConstants;
import com.central.common.utils.ResponseUtil;
import com.central.oauth.exception.ValidateCodeException; import com.central.oauth.exception.ValidateCodeException;
import com.central.oauth.service.IValidateCodeService; import com.central.oauth.service.IValidateCodeService;
import com.central.oauth2.common.properties.SecurityProperties; import com.central.oauth2.common.properties.SecurityProperties;
import com.central.oauth2.common.util.AuthUtils; import com.central.oauth2.common.util.AuthUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.filter.OncePerRequestFilter;
import javax.annotation.Resource;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -31,11 +34,8 @@ public class ValidateCodeFilter extends OncePerRequestFilter { ...@@ -31,11 +34,8 @@ public class ValidateCodeFilter extends OncePerRequestFilter {
@Autowired @Autowired
private SecurityProperties securityProperties; private SecurityProperties securityProperties;
/** @Resource
* 验证码校验失败处理器 private ObjectMapper objectMapper;
*/
@Autowired
private AuthenticationFailureHandler authenticationFailureHandler;
/** /**
* 验证请求url与配置的url是否匹配的工具类 * 验证请求url与配置的url是否匹配的工具类
...@@ -73,7 +73,7 @@ public class ValidateCodeFilter extends OncePerRequestFilter { ...@@ -73,7 +73,7 @@ public class ValidateCodeFilter extends OncePerRequestFilter {
try { try {
validateCodeService.validate(request); validateCodeService.validate(request);
} catch (ValidateCodeException e) { } catch (ValidateCodeException e) {
authenticationFailureHandler.onAuthenticationFailure(request, response, e); ResponseUtil.responseWriter(objectMapper, response, e.getMessage(), HttpStatus.BAD_REQUEST.value());
return; return;
} }
chain.doFilter(request, response); chain.doFilter(request, response);
......
...@@ -34,4 +34,9 @@ $(function(){ ...@@ -34,4 +34,9 @@ $(function(){
$(this).parent().next().hide(); $(this).parent().next().hide();
} }
}); });
let query = location.search;
if (query === '?error') {
$('#loginError').show();
}
}); });
\ No newline at end of file
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
<div class="form_btn"> <div class="form_btn">
<button type="submit">登录</button> <button type="submit">登录</button>
</div> </div>
<div id="loginError" class="ececk_warning" style="text-align: center;"><span>用户名或密码错误</span></div>
<div class="form_reg_btn"> <div class="form_reg_btn">
<!--span>还没有帐号?</span><a href="/register">马上注册</a--> <!--span>还没有帐号?</span><a href="/register">马上注册</a-->
&nbsp; &nbsp;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册