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