修改鉴权失败错误异常处理
This commit is contained in:
parent
486b34a35f
commit
41c9dd07af
@ -1,9 +1,9 @@
|
|||||||
# Spring-boot-starter-linxyun 林栖云依赖
|
# Linxyun-sso-java 林栖云依赖
|
||||||
|
|
||||||
- 拉取项目
|
- 拉取项目
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone http://codegit.linxyun.com/wenxin/spring-boot-starter-linxyun.git
|
git clone http://codegit.linxyun.com/wenxin/linxyun-sso-java.git
|
||||||
```
|
```
|
||||||
- 添加到本地 maven 仓库
|
- 添加到本地 maven 仓库
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ public enum ErrorCode {
|
|||||||
FILE_UPLOAD_FAILED("3002", "文件上传失败"),
|
FILE_UPLOAD_FAILED("3002", "文件上传失败"),
|
||||||
// 请求失败
|
// 请求失败
|
||||||
REQUEST_FAILED("3003", "请求失败"),
|
REQUEST_FAILED("3003", "请求失败"),
|
||||||
NONE("6666666", "站位");
|
NONE("9999", "异常错误");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -114,4 +114,13 @@ public enum ErrorCode {
|
|||||||
}
|
}
|
||||||
return "未知错误";
|
return "未知错误";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ErrorCode getErrorCodeByCode(String code) {
|
||||||
|
for (ErrorCode errorCode : values()) {
|
||||||
|
if (errorCode.getCode().equals(code)) {
|
||||||
|
return errorCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ErrorCode.NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,18 +61,17 @@ public class SecurityInterceptor implements HandlerInterceptor {
|
|||||||
token = matcher.group();
|
token = matcher.group();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UserAuth userAuth = ApiUtils.getUserAuth(token);
|
Result<UserAuth> authRt = ApiUtils.getUserAuth(token);
|
||||||
if (userAuth == null) {
|
assert authRt != null; // 断言
|
||||||
// 如果为空,说明 token 无效
|
if (!authRt.isSuccess()) {
|
||||||
log.info("Token 无效:{}", token);
|
response.getWriter().write(JSON.toJSONString(authRt));
|
||||||
result = Result.error(ErrorCode.LOGIN_VALIDATION_ERROR);
|
|
||||||
response.getWriter().write(JSON.toJSONString(result));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
UserAuth userAuth = authRt.getData();
|
||||||
String userRole = userAuth.getUserRoles();
|
String userRole = userAuth.getUserRoles();
|
||||||
if (StringUtils.isEmpty(userRole)) {
|
if (StringUtils.isEmpty(userRole)) {
|
||||||
log.info("用户权限为空:{}", userAuth.getUserRoles());
|
log.info("用户权限为空:{}", userAuth.getUserRoles());
|
||||||
result = Result.error(ErrorCode.LOGIN_VALIDATION_ERROR);
|
result = Result.error(ErrorCode.USER_NO_AUTHORITY);
|
||||||
response.getWriter().write(JSON.toJSONString(result));
|
response.getWriter().write(JSON.toJSONString(result));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -86,7 +85,7 @@ public class SecurityInterceptor implements HandlerInterceptor {
|
|||||||
Map<String, List<String>> roleMap = linxyunProperties.getRole();
|
Map<String, List<String>> roleMap = linxyunProperties.getRole();
|
||||||
if (!roleMap.containsKey(userAuth.getUserRoles())) {
|
if (!roleMap.containsKey(userAuth.getUserRoles())) {
|
||||||
log.info("用户权限未在系统权限中:{}", userAuth.getUserRoles());
|
log.info("用户权限未在系统权限中:{}", userAuth.getUserRoles());
|
||||||
result = Result.error(ErrorCode.LOGIN_VALIDATION_ERROR);
|
result = Result.error(ErrorCode.USER_NO_AUTHORITY);
|
||||||
response.getWriter().write(JSON.toJSONString(result));
|
response.getWriter().write(JSON.toJSONString(result));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,11 @@ package com.linxyun.core.utils;
|
|||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpResponse;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import cn.hutool.http.body.RequestBody;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.linxyun.core.common.entity.Result;
|
||||||
import com.linxyun.core.common.entity.UserAuth;
|
import com.linxyun.core.common.entity.UserAuth;
|
||||||
|
import com.linxyun.core.common.enums.ErrorCode;
|
||||||
import com.linxyun.core.properties.LinxyunProperties;
|
import com.linxyun.core.properties.LinxyunProperties;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.jodah.expiringmap.ExpirationPolicy;
|
import net.jodah.expiringmap.ExpirationPolicy;
|
||||||
@ -39,10 +42,10 @@ public class ApiUtils {
|
|||||||
/**
|
/**
|
||||||
* 单点登录
|
* 单点登录
|
||||||
*/
|
*/
|
||||||
public static UserAuth userLoginAuth(String token) {
|
public static Result<UserAuth> userLoginAuth(String token) {
|
||||||
try {
|
try {
|
||||||
if (StringUtils.isEmpty(token)) {
|
if (StringUtils.isEmpty(token)) {
|
||||||
return null;
|
return Result.error(ErrorCode.USER_NOT_LOGGED_IN);
|
||||||
}
|
}
|
||||||
String url = getApiUrl("userLoginAuth");
|
String url = getApiUrl("userLoginAuth");
|
||||||
JSONObject body = new JSONObject();
|
JSONObject body = new JSONObject();
|
||||||
@ -50,36 +53,38 @@ public class ApiUtils {
|
|||||||
JSONObject result = HttpUtils.post(url, body);
|
JSONObject result = HttpUtils.post(url, body);
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
log.error("LinxyunUtils-userLoginAuth result is null");
|
log.error("LinxyunUtils-userLoginAuth result is null");
|
||||||
return null;
|
return Result.error(ErrorCode.REQUEST_FAILED);
|
||||||
}
|
}
|
||||||
log.info("LinxyunUtils-userLoginAuth result: {}", result);
|
log.info("LinxyunUtils-userLoginAuth result: {}", result);
|
||||||
if (!result.getBoolean("success")) {
|
if (!result.getBoolean("success")) {
|
||||||
|
String code = result.getString("code");
|
||||||
String msg = result.getString("msg");
|
String msg = result.getString("msg");
|
||||||
log.error("LinxyunUtils-userLoginAuth result is not success: {}", msg);
|
log.error("LinxyunUtils-userLoginAuth result is not success: {}", msg);
|
||||||
return null;
|
return Result.error(ErrorCode.getErrorCodeByCode(code));
|
||||||
}
|
}
|
||||||
String data = result.getString("data");
|
String data = result.getString("data");
|
||||||
if (StringUtils.isEmpty(data)) {
|
if (StringUtils.isEmpty(data)) {
|
||||||
log.error("LinxyunUtils-userLoginAuth result.data is null");
|
log.error("LinxyunUtils-userLoginAuth result.data is null");
|
||||||
return null;
|
return Result.error(ErrorCode.OPERATION_ERROR);
|
||||||
}
|
}
|
||||||
UserAuth userAuth = JSONObject.parseObject(data, UserAuth.class);
|
UserAuth userAuth = JSONObject.parseObject(data, UserAuth.class);
|
||||||
USER_AUTH_MAP.put(token, userAuth);
|
USER_AUTH_MAP.put(token, userAuth);
|
||||||
return userAuth;
|
return Result.ok(userAuth);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("linxyunUtils.userLoginAuth error: {}", e.getMessage());
|
log.error("linxyunUtils.userLoginAuth error: {}", e.getMessage());
|
||||||
return null;
|
return Result.error(ErrorCode.TIMEOUT_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static UserAuth getUserAuth(String token) {
|
public static Result<UserAuth> getUserAuth(String token) {
|
||||||
if (StringUtils.isEmpty(token)) {
|
if (StringUtils.isEmpty(token)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
boolean isExist = USER_AUTH_MAP.containsKey(token);
|
boolean isExist = USER_AUTH_MAP.containsKey(token);
|
||||||
if (isExist) {
|
if (isExist) {
|
||||||
// 存在,直接获取缓存的数据
|
// 存在,直接获取缓存的数据
|
||||||
return USER_AUTH_MAP.get(token);
|
UserAuth userAuth = USER_AUTH_MAP.get(token);
|
||||||
|
return Result.ok(userAuth);
|
||||||
}
|
}
|
||||||
return userLoginAuth(token);
|
return userLoginAuth(token);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user