From daccdb27cc18bb7972dc69127014f937133fc8e7 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Thu, 08 Feb 2018 11:26:17 +0800 Subject: [PATCH] 账号过期功能实现 --- src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java | 11 +++++++++++ src/main/java/com/moral/security/common/ErrorCode.java | 2 +- src/main/java/com/moral/security/exceptions/AccountExpiredBadCredentialsException.java | 9 +++++++++ src/main/java/com/moral/controller/ScreenController.java | 2 ++ src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationFailureHandler.java | 5 ++++- 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 4309f5b..79f60bd 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -298,6 +298,8 @@ Account account = accountService.getAccountById(accountId); String regionName = areaService.selectFullNameByCode(code); if(account!=null&®ionName!=null){ + //������������ + regionName = regionName.replace(" ",""); Object sensors = sensorService.queryAll(); JSONObject params = new JSONObject(); params.put("regionCode",code); diff --git a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java index 307d880..46dc354 100644 --- a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java +++ b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java @@ -1,6 +1,7 @@ package com.moral.security.auth.login; import com.moral.entity.Account; +import com.moral.security.exceptions.AccountExpiredBadCredentialsException; import com.moral.security.model.UserContext; import com.moral.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +18,9 @@ import org.springframework.stereotype.Component; import org.springframework.util.Assert; +import java.util.Date; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -51,6 +54,14 @@ String password = (String) authentication.getCredentials(); LoginMode mode = (LoginMode) authentication.getDetails(); Account account = accountService.queryAccountByName(accountName).orElseThrow(() -> new UsernameNotFoundException("User not found: " + accountName)); + Date expireTime = Optional.of(account.getExpireTime()) + .orElseThrow( + ()-> new AccountExpiredBadCredentialsException("Authentication Failed. Account has expired.") + ); + Date nowTime = new Date(); + if(expireTime.getTime()<nowTime.getTime()){ + throw new AccountExpiredBadCredentialsException("Authentication Failed. Account has expired."); + } if (!encoder.matches(password, account.getPassword())) { throw new BadCredentialsException("Authentication Failed. Username or Password not valid."); } diff --git a/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationFailureHandler.java b/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationFailureHandler.java index 8eeec89..aeca9fc 100644 --- a/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationFailureHandler.java +++ b/src/main/java/com/moral/security/auth/login/LoginAwareAuthenticationFailureHandler.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.moral.security.common.ErrorCode; import com.moral.security.common.ErrorResponse; +import com.moral.security.exceptions.AccountExpiredBadCredentialsException; import com.moral.security.exceptions.AuthMethodNotSupportedException; import com.moral.security.exceptions.JwtExpiredTokenException; import org.springframework.beans.factory.annotation.Autowired; @@ -40,7 +41,9 @@ response.setStatus(HttpStatus.UNAUTHORIZED.value()); response.setContentType(MediaType.APPLICATION_JSON_VALUE); - if (e instanceof BadCredentialsException) { + if(e instanceof AccountExpiredBadCredentialsException){ + mapper.writeValue(response.getWriter(), ErrorResponse.of(e.getMessage(), ErrorCode.ACCOUNT_EXPIRED, HttpStatus.UNAUTHORIZED)); + }else if (e instanceof BadCredentialsException) { mapper.writeValue(response.getWriter(), ErrorResponse.of("Invalid username or password", ErrorCode.AUTHENTICATION, HttpStatus.UNAUTHORIZED)); } else if (e instanceof JwtExpiredTokenException) { mapper.writeValue(response.getWriter(), ErrorResponse.of("Token has expired", ErrorCode.JWT_TOKEN_EXPIRED, HttpStatus.UNAUTHORIZED)); diff --git a/src/main/java/com/moral/security/common/ErrorCode.java b/src/main/java/com/moral/security/common/ErrorCode.java index db6750d..6a28162 100644 --- a/src/main/java/com/moral/security/common/ErrorCode.java +++ b/src/main/java/com/moral/security/common/ErrorCode.java @@ -12,7 +12,7 @@ public enum ErrorCode { GLOBAL(2), - AUTHENTICATION(10), JWT_TOKEN_EXPIRED(11); + AUTHENTICATION(10), JWT_TOKEN_EXPIRED(11),ACCOUNT_EXPIRED(12); private int errorCode; diff --git a/src/main/java/com/moral/security/exceptions/AccountExpiredBadCredentialsException.java b/src/main/java/com/moral/security/exceptions/AccountExpiredBadCredentialsException.java new file mode 100644 index 0000000..c209be6 --- /dev/null +++ b/src/main/java/com/moral/security/exceptions/AccountExpiredBadCredentialsException.java @@ -0,0 +1,9 @@ +package com.moral.security.exceptions; + +import org.springframework.security.core.AuthenticationException; + +public class AccountExpiredBadCredentialsException extends AuthenticationException { + public AccountExpiredBadCredentialsException(String msg) { + super(msg); + } +} -- Gitblit v1.8.0