序列号重复

添加未识别loginKey异常
删除StpUtil单账户体系默认loginKey相关代码
This commit is contained in:
hjc
2021-04-27 09:28:14 +08:00
parent 3405188531
commit 2d4267b1da
5 changed files with 66 additions and 13 deletions

View File

@@ -15,4 +15,13 @@ import java.lang.annotation.Target;
@Target({ ElementType.METHOD, ElementType.TYPE })
public @interface SaCheckLogin {
/**
* 多账号下哪些需要校验
* 每个StpUtil都有一个stpLogic属性
* 初始化StpLogic时,指定的LoginKey字符串放入这里
* 可以放多个,所以类型为数组
* @return LoginKey字符串数组
*/
String [] loginKeys() default {};
}

View File

@@ -1,7 +1,5 @@
package cn.dev33.satoken.exception;
import cn.dev33.satoken.stp.StpUtil;
/**
* 没有指定权限码,抛出的异常
*
@@ -13,7 +11,7 @@ public class NotPermissionException extends SaTokenException {
/**
* 序列化版本号
*/
private static final long serialVersionUID = 6806129545290130142L;
private static final long serialVersionUID = 6806129545290130141L;
/** 权限码 */
private String code;
@@ -39,10 +37,6 @@ public class NotPermissionException extends SaTokenException {
return loginKey;
}
public NotPermissionException(String code) {
this(code, StpUtil.stpLogic.loginKey);
}
public NotPermissionException(String code, String loginKey) {
super("无此权限:" + code);
this.code = code;

View File

@@ -1,7 +1,5 @@
package cn.dev33.satoken.exception;
import cn.dev33.satoken.stp.StpUtil;
/**
* 没有指定角色标识,抛出的异常
*
@@ -39,10 +37,6 @@ public class NotRoleException extends SaTokenException {
return loginKey;
}
public NotRoleException(String role) {
this(role, StpUtil.stpLogic.loginKey);
}
public NotRoleException(String role, String loginKey) {
// 这里到底要不要拼接上loginKey呢纠结
super("无此角色:" + role);

View File

@@ -0,0 +1,29 @@
package cn.dev33.satoken.exception;
public class UnrecognizedLoginKeyException extends RuntimeException{
/**
* 序列化版本号
*/
private static final long serialVersionUID = 6806129545290130140L;
/**
* loginKey
*/
private String loginKey;
/**
* 获得loginKey
*
* @return loginKey
*/
public String getLoginKey() {
return loginKey;
}
public UnrecognizedLoginKeyException(String loginKey) {
super("未知的loginKey: " + loginKey);
this.loginKey = loginKey;
}
}

View File

@@ -1,5 +1,7 @@
package cn.dev33.satoken.aop;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.annotation.SaCheckLogin;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@@ -12,6 +14,8 @@ import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaTokenConsts;
import java.lang.reflect.Method;
/**
* sa-token 基于 Spring Aop 的注解鉴权
*
@@ -58,8 +62,31 @@ public class SaCheckAspect {
*/
@Around("pointcut()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
// 注解鉴权
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
// ----------- 验证登录
if(method.isAnnotationPresent(SaCheckLogin.class) || method.getDeclaringClass().isAnnotationPresent(SaCheckLogin.class)) {
SaCheckLogin checkLogin = method.getAnnotation(SaCheckLogin.class);
if(checkLogin.loginKeys().length == 0) {
getStpLogic().checkLogin();
} else {
for(String loginKey : checkLogin.loginKeys()) {
if (SaManager.stpLogicMap.containsKey(loginKey)) {
StpLogic stpLogic = SaManager.stpLogicMap.get(loginKey);
stpLogic.checkLogin();
} else {
}
}
}
}
getStpLogic().checkMethodAnnotation(signature.getMethod());
try {
// 执行原有逻辑