From d21e551b42746e5c689c96e584042e418083ff9b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 11 Mar 2021 16:06:18 +0800
Subject: [PATCH] tokenUtils更新
---
screen-manage/pom.xml | 5
screen-manage/src/main/resources/application-dev.yml | 4
screen-manage/src/main/java/com/moral/api/config/mvc/SpringMVCconfig.java | 9 +
screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java | 16 ++
screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java | 13 ++
screen-common/src/main/java/com/moral/exception/TokenException.java | 72 ++++++++++++
screen-common/src/main/java/com/moral/util/TokenUtils.java | 86 ++++++++------
screen-common/src/main/java/com/moral/constant/Constants.java | 19 +++
screen-manage/src/main/java/com/moral/api/controller/AccountController.java | 30 +++-
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java | 82 ++++++++-----
10 files changed, 259 insertions(+), 77 deletions(-)
diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index d824510..945ef27 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -15,6 +15,16 @@
*/
public static final String MSG_OPERATION_FAILED = "���������������";
+ /*
+ * token������
+ * */
+ public static final String MSG_TOKEN_ERROR = "token������������������������";
+
+ /*
+ * token������������
+ * */
+ public static final String MSG_TOKEN_CREATE_ERROR = "token���������������������������������";
+
/**
* ������������code
*/
@@ -24,6 +34,15 @@
*/
public static final int CODE_OPERATION_FAILED = -1;
+ /**
+ * token������������
+ */
+ public static final int CODE_TOKEN_ERROR = -10;
+
+ /*
+ * token������������
+ * */
+ public static final int CODE_TOKEN_CREATE_ERROR = -11;
}
diff --git a/screen-common/src/main/java/com/moral/exception/TokenException.java b/screen-common/src/main/java/com/moral/exception/TokenException.java
new file mode 100644
index 0000000..e8bdc1c
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/exception/TokenException.java
@@ -0,0 +1,72 @@
+package com.moral.exception;
+
+/**
+ * @ClassName TokenException
+ * @Description Token������
+ * @Author ���������
+ * @Date 2021/3/11 14:54
+ * @Version TODO
+ **/
+public class TokenException extends RuntimeException {
+
+ /**
+ * ���������
+ */
+ private int code;
+
+ /**
+ * ������������
+ */
+ private String msg;
+
+ /** */
+ private static final long serialVersionUID = 1L;
+
+ public TokenException() {
+ super();
+ }
+
+ public TokenException(String msg) {
+ super(msg);
+ this.msg = msg;
+ }
+
+ public TokenException(Throwable t) {
+ super(t);
+ }
+
+ public TokenException(String msg, Throwable t) {
+ super(msg);
+ this.msg = msg;
+ }
+
+ public TokenException(int code, String msg) {
+ super(msg);
+ this.code = code;
+ this.msg = msg;
+ }
+
+ public TokenException(int code, String msg, Throwable t) {
+ super(msg, t);
+ this.code = code;
+ this.msg = msg;
+ }
+
+ /**
+ * Getter method for property <tt>code</tt>.
+ *
+ * @return property value of code
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * Getter method for property <tt>msg</tt>.
+ *
+ * @return property value of msg
+ */
+ public String getMsg() {
+ return msg;
+ }
+}
diff --git a/screen-common/src/main/java/com/moral/util/TokenUtils.java b/screen-common/src/main/java/com/moral/util/TokenUtils.java
index 77d2d17..7900fa2 100644
--- a/screen-common/src/main/java/com/moral/util/TokenUtils.java
+++ b/screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -1,5 +1,8 @@
package com.moral.util;
+import com.moral.constant.Constants;
+import com.moral.exception.TokenException;
+import com.sun.org.apache.bcel.internal.classfile.ConstantString;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -31,13 +34,7 @@
}
//token��������� ������������
- private static final int validity_time = 60*60*24*7;
- //token������,������������
- public static final int error = -1;
- //token������
- public static final int timeout = -2;
- //token���������������������
- public static final int valid = 1;
+ private static final int validity_time = 60*30;
/**
* @Description: ������token
@@ -46,69 +43,86 @@
* @Author: ���������
* @Date: 2021/3/10
*/
- public static Map<String, Object> getToken(String uid, Map<String, Object> userInfo) {
- Map<String, Object> result = new HashMap<>();
+ public static String getToken(String uid, Map<String, Object> userInfo) {
//������������token
try {
//������token
String token = TokenEncryptUtils.encoded(uid + "/" + System.currentTimeMillis() / 1000);
//������������token
String oldToken = (String) redisTemplate.opsForHash().get("user_token", uid);
- if(oldToken!=null)
+ if (oldToken != null)
redisTemplate.delete(oldToken);
//���token���������value���
redisTemplate.opsForValue().set(token, userInfo);
redisTemplate.expire(token, validity_time, TimeUnit.SECONDS);
//���token���������Hash���
- redisTemplate.opsForHash().put("user_token",uid,token);
-
- result.put("code", valid);
- result.put("token",token);
- }catch (Exception e){
- e.printStackTrace();
- log.error(e.getMessage());
- result.put("code",error);
+ redisTemplate.opsForHash().put("user_token", uid, token);
+ return token;
+ } catch (Exception e) {
+ log.error("token���������������"+e.getMessage());
+ throw new TokenException(Constants.CODE_TOKEN_CREATE_ERROR,Constants.MSG_TOKEN_CREATE_ERROR);
}
- return result;
+
}
/**
* @Description: ������token
* @Param: [type, token] type��� ���������������manage ���������������api
- * @return: java.util.Map<java.lang.String , java.lang.Object>
+ * @return: java.util.Map<java.lang.String , java.lang.Object>
* @Author: ���������
* @Date: 2021/3/10
*/
- public static Map<String, Object> checkToken( String token) {
- Map<String, Object> result = new HashMap<>();
+ public static void checkToken(String token) {
try {
String[] tokenArray = TokenEncryptUtils.decoded(token).split("/");
//������token������������
if (tokenArray.length != 2) {
- result.put("code", error);
- result.put("msg", "���������token");
- return result;
+ throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
}
//������token������������
- int tokenTime = Integer.parseInt(tokenArray[1]);
- if ((System.currentTimeMillis() / 1000) - tokenTime > validity_time) {
- result.put("code", timeout);
- result.put("msg", "���������������������������������������");
- return result;
+ if (!redisTemplate.hasKey(token)) {
+ throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
}
- result.put("code", valid);
- return result;
} catch (Exception e) {
log.error("token���������������token������" + e.getMessage());
- result.put("code", error);
- result.put("msg", "���������token");
- return result;
+ throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
}
}
- //������token������������������
+ /**
+ * @Description: ������token������������������
+ * @Param: [token]
+ * @return: java.util.Map<java.lang.String , java.lang.Object>
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
public static Map<String, Object> getUserInfoByToken(String token) {
Map<String, Object> userInfo = (Map<String, Object>) redisTemplate.opsForValue().get(token);
+ if(userInfo==null)
+ throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
return userInfo;
}
+
+ /**
+ * @Description: ������token
+ * @Param: [uid, token]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
+ public static void destoryToken(String uid, String token) {
+ redisTemplate.delete("token");
+ redisTemplate.opsForHash().delete("user_token", uid);
+ }
+
+ /**
+ * @Description: token������
+ * @Param: [token]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
+ public static void extendTokenTime(String token) {
+ redisTemplate.expire(token, validity_time, TimeUnit.SECONDS);
+ }
}
diff --git a/screen-manage/pom.xml b/screen-manage/pom.xml
index 165d0b7..2589b24 100644
--- a/screen-manage/pom.xml
+++ b/screen-manage/pom.xml
@@ -18,6 +18,11 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-devtools</artifactId>
+ <optional>true</optional>
+ </dependency>
</dependencies>
<build>
diff --git a/screen-manage/src/main/java/com/moral/api/config/mvc/SpringMVCconfig.java b/screen-manage/src/main/java/com/moral/api/config/mvc/SpringMVCconfig.java
index 17dc780..b836014 100644
--- a/screen-manage/src/main/java/com/moral/api/config/mvc/SpringMVCconfig.java
+++ b/screen-manage/src/main/java/com/moral/api/config/mvc/SpringMVCconfig.java
@@ -7,6 +7,7 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.ArrayList;
@@ -34,4 +35,12 @@
regisration.addPathPatterns("/**/**");//������������������
regisration.excludePathPatterns(excludePath);//���������������������
}
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
+ registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ WebMvcConfigurer.super.addResourceHandlers(registry);
+ }
}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
index 5b3ff22..779cea6 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -3,31 +3,47 @@
import com.moral.api.service.ManageAccountService;
import com.moral.constant.ResultMessage;
import com.moral.util.ObjectUtils;
-import io.netty.util.internal.ObjectUtil;
-import io.swagger.annotations.Api;
+import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@Slf4j
-@Api(tags = {"������������"})
+@Api(tags = {"������������������"})
@RestController
@RequestMapping("/account")
public class AccountController {
@Resource
ManageAccountService accountService;
+ @Autowired
+ @Qualifier("tokenRedisTemplate")
+ RedisTemplate redisTemplate;
+
@PostMapping("login")
- public ResultMessage login(@RequestBody Map<String,Object> paramters){
- if(!ObjectUtils.checkParamAndMap(paramters,"account","password"))
- return ResultMessage.fail("���������������");
+ public ResultMessage login(@RequestBody Map<String, Object> paramters) {
+ if (!ObjectUtils.checkParamAndMap(paramters, "account", "password"))
+ return ResultMessage.fail("���������������");
+
Map<String, Object> result = accountService.login(paramters);
- if((int)result.get("accountId")<0)
+
+ if ((int) result.get("accountId") < 0)
return ResultMessage.fail(result);
return ResultMessage.ok(result);
}
+ @PostMapping("logout")
+ public ResultMessage logout(@RequestBody Map<String, Object> paramters, HttpServletRequest request) {
+
+ return null;
+ }
+
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java b/screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
index b43234f..2e62d5b 100644
--- a/screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
+++ b/screen-manage/src/main/java/com/moral/api/exception/GlobalExceptionHandler.java
@@ -2,6 +2,7 @@
import com.moral.constant.Constants;
import com.moral.constant.ResultMessage;
+import com.moral.exception.TokenException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -22,7 +23,7 @@
@ResponseStatus(HttpStatus.OK)
public ResultMessage handleException(Exception ex) {
log.error(ex.getMessage());
- log.error(ex.getStackTrace().toString());
+ ex.printStackTrace();
return ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "������������");
}
@@ -36,4 +37,14 @@
return ResultMessage.fail(Constants.CODE_OPERATION_FAILED, "������������������������");
}
+ /**
+ * ������TokenException������
+ */
+ @ExceptionHandler({TokenException.class})
+ @ResponseBody
+ @ResponseStatus(HttpStatus.OK)
+ public ResultMessage handleTokenException(TokenException ex) {
+ return ResultMessage.fail(ex.getCode(),ex.getMsg());
+ }
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java b/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
index ad23a22..875edd7 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
@@ -14,5 +14,21 @@
* @since 2021-03-09
*/
public interface ManageAccountService extends IService<ManageAccount> {
+ /**
+ * @Description: ������������
+ * @Param: [paramters]
+ * @return: java.util.Map<java.lang.String,java.lang.Object>
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
Map<String, Object> login(Map<String, Object> paramters);
+
+ /**
+ * @Description: ������������
+ * @Param: [paramters]
+ * @return: java.util.Map<java.lang.String,java.lang.Object>
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
+ Map<String, Object> logout(Map<String, Object> paramters);
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
index b76ddbe..53aee77 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -39,9 +39,16 @@
@Resource
ManageMenuMapper manageMenuMapper;
-
+ /**
+ * @Description: ������
+ * @Param: [paramters]
+ * @return: java.util.Map<java.lang.String , java.lang.Object>
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
+ @Override
public Map<String, Object> login(Map<String, Object> paramters) {
- Map<String,Object> result = new HashMap<>();
+ Map<String, Object> result = new HashMap<>();
//������������
String cyrpAccount = (String) paramters.get("account");
String cyrpPassword = (String) paramters.get("password");
@@ -52,59 +59,68 @@
QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
wrapper.eq("account", account);
ManageAccount manageAccount = accountMapper.selectOne(wrapper);
- if(ObjectUtils.isEmpty(manageAccount)){
- result.put("accountId",-1);
- result.put("msg","���������������");
+ if (ObjectUtils.isEmpty(manageAccount)) {
+ result.put("accountId", -1);
+ result.put("msg", "���������������");
return result;
}
//������������������������
- if(manageAccount.getIsDelete().equals("1")){
- result.put("accountId",-2);
- result.put("msg","������������������");
+ if (manageAccount.getIsDelete().equals("1")) {
+ result.put("accountId", -2);
+ result.put("msg", "������������������");
return result;
}
//������������
- if(!MD5Utils.saltMD5Verify(password,manageAccount.getPassword())){
- result.put("accountId",-3);
- result.put("msg","���������������������");
+ if (!MD5Utils.saltMD5Verify(password, manageAccount.getPassword())) {
+ result.put("accountId", -3);
+ result.put("msg", "���������������������");
return result;
}
//������������
List<ManageRole> roles = roleMapper.getManageRoleByAccountId(manageAccount.getId());
- if(ObjectUtils.isEmpty(roles)){
- result.put("accountId",-4);
- result.put("msg","������������������������");
+ if (ObjectUtils.isEmpty(roles)) {
+ result.put("accountId", -4);
+ result.put("msg", "������������������������");
return result;
}
//������������
List<ManageMenu> menus = manageMenuMapper.getParentChildrenMenusByRoles(roles);
- if(ObjectUtils.isEmpty(menus)){
- result.put("accountId",-5);
- result.put("msg","������������������������");
+ if (ObjectUtils.isEmpty(menus)) {
+ result.put("accountId", -5);
+ result.put("msg", "������������������������");
return result;
}
//������������token,���������������������������������
- Map<String,Object> userInfo = new HashMap<>();//���������������������������������������
- userInfo.put("accountId",manageAccount.getId());//������Id
- userInfo.put("userName",manageAccount.getUserName());//������������
- userInfo.put("roles",roles);//������������
- userInfo.put("menus",menus);//������������
- Map<String, Object> tokenResult = TokenUtils.getToken(String.valueOf(manageAccount.getId()), userInfo);
- if(tokenResult.get("code").equals(TokenUtils.error)){
- result.put("accountId",-6);
- result.put("msg","������token������");
- return result;
- }
+ Map<String, Object> userInfo = new HashMap<>();//���������������������������������������
+ userInfo.put("accountId", manageAccount.getId());//������Id
+ userInfo.put("userName", manageAccount.getUserName());//������������
+ userInfo.put("roles", roles);//������������
+ userInfo.put("menus", menus);//������������
+ String token = TokenUtils.getToken(String.valueOf(manageAccount.getId()), userInfo);
+
//������������������
- result.put("accountId",manageAccount.getId());//������Id
- result.put("userName",manageAccount.getUserName());//������������
- result.put("roles",roles);//������������
- result.put("menus",menus);//������������
- result.put("token",tokenResult.get("token"));
+ result.put("accountId", manageAccount.getId());//������Id
+ result.put("userName", manageAccount.getUserName());//������������
+ result.put("roles", roles);//������������
+ result.put("menus", menus);//������������
+ result.put("token", token);
return result;
}
+ /**
+ * @Description: ������
+ * @Param: [paramters]
+ * @return: java.util.Map<java.lang.String , java.lang.Object>
+ * @Author: ���������
+ * @Date: 2021/3/11
+ */
+ @Override
+ public Map<String, Object> logout(Map<String, Object> paramters) {
+
+ return null;
+ }
+
}
diff --git a/screen-manage/src/main/resources/application-dev.yml b/screen-manage/src/main/resources/application-dev.yml
index 426aa21..77f43ef 100644
--- a/screen-manage/src/main/resources/application-dev.yml
+++ b/screen-manage/src/main/resources/application-dev.yml
@@ -114,6 +114,10 @@
interceptor:
exclude:
- /account/login
+ - /swagger-ui.html
+ - /swagger-resources/**
+ - /webjars/**
+ - /account/logout
AES:
KEY:
AD42F7787B035B7580000EF93BE20BAD
--
Gitblit v1.8.0