mirror of
https://gitee.com/dromara/sa-token.git
synced 2026-02-27 16:50:24 +08:00
v1.11.0 新特性:AOP注解鉴权
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
package cn.dev33.satoken.interceptor;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.dev33.satoken.stp.StpLogic;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
|
||||
@@ -52,56 +50,10 @@ public class SaCheckInterceptor implements HandlerInterceptor {
|
||||
if (handler instanceof HandlerMethod == false) {
|
||||
return true;
|
||||
}
|
||||
HandlerMethod method = (HandlerMethod ) handler;
|
||||
Method method = ((HandlerMethod) handler).getMethod();
|
||||
|
||||
// ----------- 验证登录
|
||||
if(method.hasMethodAnnotation(SaCheckLogin.class) || method.getBeanType().isAnnotationPresent(SaCheckLogin.class)) {
|
||||
stpLogic.checkLogin();
|
||||
}
|
||||
|
||||
// ----------- 验证角色
|
||||
// 验证方法上的
|
||||
SaCheckRole scr = method.getMethodAnnotation(SaCheckRole.class);
|
||||
if(scr != null) {
|
||||
String[] roleArray = scr.value();
|
||||
if(scr.mode() == SaMode.AND) {
|
||||
stpLogic.checkRoleAnd(roleArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkRoleOr(roleArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
// 验证类上的
|
||||
scr = method.getBeanType().getAnnotation(SaCheckRole.class);
|
||||
if(scr != null) {
|
||||
String[] roleArray = scr.value();
|
||||
if(scr.mode() == SaMode.AND) {
|
||||
stpLogic.checkRoleAnd(roleArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkRoleOr(roleArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
|
||||
// ----------- 验证权限
|
||||
// 验证方法上的
|
||||
SaCheckPermission scp = method.getMethodAnnotation(SaCheckPermission.class);
|
||||
if(scp != null) {
|
||||
String[] permissionArray = scp.value();
|
||||
if(scp.mode() == SaMode.AND) {
|
||||
stpLogic.checkPermissionAnd(permissionArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkPermissionOr(permissionArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
// 验证类上的
|
||||
scp = method.getBeanType().getAnnotation(SaCheckPermission.class);
|
||||
if(scp != null) {
|
||||
String[] permissionArray = scp.value();
|
||||
if(scp.mode() == SaMode.AND) {
|
||||
stpLogic.checkPermissionAnd(permissionArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkPermissionOr(permissionArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
// 进行验证
|
||||
stpLogic.checkMethodAnnotation(method);
|
||||
|
||||
// 通过验证
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user