mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-21 02:57:56 +08:00
权限码限定必须为String类型
This commit is contained in:
@@ -14,7 +14,7 @@ public interface StpInterface {
|
||||
* @param loginKey 具体的stp标识
|
||||
* @return 该账号id具有的权限码集合
|
||||
*/
|
||||
public List<Object> getPermissionCodeList(Object loginId, String loginKey);
|
||||
public List<String> getPermissionCodeList(Object loginId, String loginKey);
|
||||
|
||||
|
||||
}
|
||||
|
@@ -10,8 +10,8 @@ import java.util.List;
|
||||
public class StpInterfaceDefaultImpl implements StpInterface {
|
||||
|
||||
@Override
|
||||
public List<Object> getPermissionCodeList(Object loginId, String loginKey) {
|
||||
return new ArrayList<Object>();
|
||||
public List<String> getPermissionCodeList(Object loginId, String loginKey) {
|
||||
return new ArrayList<String>();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -678,9 +678,9 @@ public class StpLogic {
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public boolean hasPermission(Object loginId, Object permissionCode) {
|
||||
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
return !(pcodeList == null || pcodeList.contains(permissionCode) == false);
|
||||
public boolean hasPermission(Object loginId, String permissionCode) {
|
||||
List<String> permissionCodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
return !(permissionCodeList == null || permissionCodeList.contains(permissionCode) == false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -688,7 +688,7 @@ public class StpLogic {
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public boolean hasPermission(Object permissionCode) {
|
||||
public boolean hasPermission(String permissionCode) {
|
||||
return hasPermission(getLoginId(), permissionCode);
|
||||
}
|
||||
|
||||
@@ -696,7 +696,7 @@ public class StpLogic {
|
||||
* 当前账号是否含有指定权限, 没有就抛出异常
|
||||
* @param permissionCode 权限码
|
||||
*/
|
||||
public void checkPermission(Object permissionCode) {
|
||||
public void checkPermission(String permissionCode) {
|
||||
if(hasPermission(permissionCode) == false) {
|
||||
throw new NotPermissionException(permissionCode, this.loginKey);
|
||||
}
|
||||
@@ -706,11 +706,11 @@ public class StpLogic {
|
||||
* 当前账号是否含有指定权限, [指定多个,必须全都有]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public void checkPermissionAnd(Object... permissionCodeArray){
|
||||
public void checkPermissionAnd(String... permissionCodeArray){
|
||||
Object loginId = getLoginId();
|
||||
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
for (Object pcode : permissionCodeArray) {
|
||||
if(pcodeList.contains(pcode) == false) {
|
||||
List<String> permissionCodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
for (String pcode : permissionCodeArray) {
|
||||
if(permissionCodeList.contains(pcode) == false) {
|
||||
throw new NotPermissionException(pcode, this.loginKey); // 没有权限抛出异常
|
||||
}
|
||||
}
|
||||
@@ -720,11 +720,11 @@ public class StpLogic {
|
||||
* 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public void checkPermissionOr(Object... permissionCodeArray){
|
||||
public void checkPermissionOr(String... permissionCodeArray){
|
||||
Object loginId = getLoginId();
|
||||
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
for (Object pcode : permissionCodeArray) {
|
||||
if(pcodeList.contains(pcode) == true) {
|
||||
List<String> permissionCodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
|
||||
for (String permissionCode : permissionCodeArray) {
|
||||
if(permissionCodeList.contains(permissionCode) == true) {
|
||||
return; // 有的话提前退出
|
||||
}
|
||||
}
|
||||
|
@@ -311,8 +311,8 @@ public class StpUtil {
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public static boolean hasPermission(Object loginId, Object pcode) {
|
||||
return stpLogic.hasPermission(loginId, pcode);
|
||||
public static boolean hasPermission(Object loginId, String permissionCode) {
|
||||
return stpLogic.hasPermission(loginId, permissionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -320,7 +320,7 @@ public class StpUtil {
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public static boolean hasPermission(Object permissionCode) {
|
||||
public static boolean hasPermission(String permissionCode) {
|
||||
return stpLogic.hasPermission(permissionCode);
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ public class StpUtil {
|
||||
* 当前账号是否含有指定权限, 没有就抛出异常
|
||||
* @param permissionCode 权限码
|
||||
*/
|
||||
public static void checkPermission(Object permissionCode) {
|
||||
public static void checkPermission(String permissionCode) {
|
||||
stpLogic.checkPermission(permissionCode);
|
||||
}
|
||||
|
||||
@@ -336,7 +336,7 @@ public class StpUtil {
|
||||
* 当前账号是否含有指定权限, [指定多个,必须全都有]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public static void checkPermissionAnd(Object... permissionCodeArray) {
|
||||
public static void checkPermissionAnd(String... permissionCodeArray) {
|
||||
stpLogic.checkPermissionAnd(permissionCodeArray);
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ public class StpUtil {
|
||||
* 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public static void checkPermissionOr(Object... permissionCodeArray) {
|
||||
public static void checkPermissionOr(String... permissionCodeArray) {
|
||||
stpLogic.checkPermissionOr(permissionCodeArray);
|
||||
}
|
||||
|
||||
|
@@ -15,8 +15,8 @@ public class StpInterfaceImpl implements StpInterface {
|
||||
|
||||
// 返回一个账号所拥有的权限码集合
|
||||
@Override
|
||||
public List<Object> getPermissionCodeList(Object login_id, String login_key) {
|
||||
List<Object> list = new ArrayList<Object>(); // 本list仅做模拟,实际项目中要根据具体业务逻辑来查询权限
|
||||
public List<String> getPermissionCodeList(Object login_id, String login_key) {
|
||||
List<String> list = new ArrayList<String>(); // 本list仅做模拟,实际项目中要根据具体业务逻辑来查询权限
|
||||
list.add("101");
|
||||
list.add("user-add");
|
||||
list.add("user-delete");
|
||||
|
@@ -5,7 +5,7 @@ import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.stp.StpLogic;
|
||||
|
||||
/**
|
||||
* 一个默认的实现
|
||||
* user认证实现
|
||||
* @author kong
|
||||
*/
|
||||
public class StpUserUtil {
|
||||
@@ -35,22 +35,22 @@ public class StpUserUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定id的tokenValue
|
||||
* @param loginId .
|
||||
* @return
|
||||
* 获取指定loginId的tokenValue
|
||||
* @param loginId 账号id
|
||||
* @return token值
|
||||
*/
|
||||
public static String getTokenValueByLoginId(Object loginId) {
|
||||
return stpLogic.getTokenValueByLoginId(loginId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前StpLogin的loginKey
|
||||
* 获取当前StpLogin的loginKey
|
||||
* @return 当前StpLogin的loginKey
|
||||
*/
|
||||
public static String getLoginKey(){
|
||||
return stpLogic.getLoginKey();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前会话的token信息
|
||||
* @return token信息
|
||||
@@ -59,11 +59,12 @@ public class StpUserUtil {
|
||||
return stpLogic.getTokenInfo();
|
||||
}
|
||||
|
||||
|
||||
// =================== 登录相关操作 ===================
|
||||
|
||||
/**
|
||||
* 在当前会话上登录id
|
||||
* @param loginId 登录id ,建议的类型:(long | int | String)
|
||||
* @param loginId 登录id,建议的类型:(long | int | String)
|
||||
*/
|
||||
public static void setLoginId(Object loginId) {
|
||||
stpLogic.setLoginId(loginId);
|
||||
@@ -77,7 +78,7 @@ public class StpUserUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定loginId的会话注销登录(清退下线)
|
||||
* 指定loginId的会话注销登录(正常注销下线)
|
||||
* @param loginId 账号id
|
||||
*/
|
||||
public static void logoutByLoginId(Object loginId) {
|
||||
@@ -94,41 +95,42 @@ public class StpUserUtil {
|
||||
|
||||
// 查询相关
|
||||
|
||||
/**
|
||||
* 获取当前会话是否已经登录
|
||||
/**
|
||||
* 获取当前会话是否已经登录
|
||||
* @return 是否已登录
|
||||
*/
|
||||
public static boolean isLogin() {
|
||||
return stpLogic.isLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* 检验当前会话是否已经登录,如未登录,则抛出异常
|
||||
/**
|
||||
* 检验当前会话是否已经登录,如未登录,则抛出异常
|
||||
*/
|
||||
public static void checkLogin() {
|
||||
getLoginId();
|
||||
stpLogic.checkLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 如果未登录,则抛出异常
|
||||
* @return .
|
||||
|
||||
/**
|
||||
* 获取当前会话账号id, 如果未登录,则抛出异常
|
||||
* @return 账号id
|
||||
*/
|
||||
public static Object getLoginId() {
|
||||
return stpLogic.getLoginId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 如果未登录,则返回默认值
|
||||
* @param defaultValue .
|
||||
* @return .
|
||||
* 获取当前会话登录id, 如果未登录,则返回默认值
|
||||
* @param <T> 返回类型
|
||||
* @param defaultValue 默认值
|
||||
* @return 登录id
|
||||
*/
|
||||
public static <T> T getLoginId(T defaultValue) {
|
||||
return stpLogic.getLoginId(defaultValue);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 如果未登录,则返回null
|
||||
* @return
|
||||
* 获取当前会话登录id, 如果未登录,则返回null
|
||||
* @return 账号id
|
||||
*/
|
||||
public static Object getLoginIdDefaultNull() {
|
||||
return stpLogic.getLoginIdDefaultNull();
|
||||
@@ -136,7 +138,7 @@ public class StpUserUtil {
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 并转换为String
|
||||
* @return
|
||||
* @return 账号id
|
||||
*/
|
||||
public static String getLoginIdAsString() {
|
||||
return stpLogic.getLoginIdAsString();
|
||||
@@ -144,7 +146,7 @@ public class StpUserUtil {
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 并转换为int
|
||||
* @return
|
||||
* @return 账号id
|
||||
*/
|
||||
public static int getLoginIdAsInt() {
|
||||
return stpLogic.getLoginIdAsInt();
|
||||
@@ -152,15 +154,16 @@ public class StpUserUtil {
|
||||
|
||||
/**
|
||||
* 获取当前会话登录id, 并转换为long
|
||||
* @return
|
||||
* @return 账号id
|
||||
*/
|
||||
public static long getLoginIdAsLong() {
|
||||
return stpLogic.getLoginIdAsLong();
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 获取指定token对应的登录id,如果未登录,则返回 null
|
||||
* @return .
|
||||
* @param tokenValue token
|
||||
* @return 登录id
|
||||
*/
|
||||
public static Object getLoginIdByToken(String tokenValue) {
|
||||
return stpLogic.getLoginIdByToken(tokenValue);
|
||||
@@ -170,8 +173,8 @@ public class StpUserUtil {
|
||||
// =================== session相关 ===================
|
||||
|
||||
/**
|
||||
* 获取指定loginId的session, 如果没有,isCreate=是否新建并返回
|
||||
* @param loginId 登录id
|
||||
* 获取指定loginId的session, 如果session尚未创建,isCreate=是否新建并返回
|
||||
* @param loginId 账号id
|
||||
* @param isCreate 是否新建
|
||||
* @return SaSession
|
||||
*/
|
||||
@@ -180,31 +183,80 @@ public class StpUserUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定loginId的session
|
||||
* @param loginId .
|
||||
* @return .
|
||||
* 获取指定loginId的session, 如果session尚未创建,isCreate=是否新建并返回
|
||||
* @param loginId 账号id
|
||||
* @param isCreate 是否新建
|
||||
* @return SaSession
|
||||
*/
|
||||
public static SaSession getSessionByLoginId(Object loginId) {
|
||||
return stpLogic.getSessionByLoginId(loginId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当前会话的session
|
||||
* @return
|
||||
* 获取当前会话的session, 如果session尚未创建,isCreate=是否新建并返回
|
||||
* @param isCreate 是否新建
|
||||
* @return 当前会话的session
|
||||
*/
|
||||
public static SaSession getSession(boolean isCreate) {
|
||||
return stpLogic.getSession(isCreate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前会话的session,如果session尚未创建,则新建并返回
|
||||
* @return 当前会话的session
|
||||
*/
|
||||
public static SaSession getSession() {
|
||||
return stpLogic.getSession();
|
||||
}
|
||||
|
||||
|
||||
// =================== token专属session ===================
|
||||
|
||||
/**
|
||||
* 获取指定token的专属session,如果session尚未创建,则新建并返回
|
||||
* @param tokenValue token值
|
||||
* @return session会话
|
||||
*/
|
||||
public static SaSession getTokenSessionByToken(String tokenValue) {
|
||||
return stpLogic.getTokenSessionByToken(tokenValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前token的专属-session,如果session尚未创建,则新建并返回
|
||||
* <p> 只有当前会话属于登录状态才可调用
|
||||
* @return session会话
|
||||
*/
|
||||
public static SaSession getTokenSession() {
|
||||
return stpLogic.getTokenSession();
|
||||
}
|
||||
|
||||
|
||||
// =================== [临时过期] 验证相关 ===================
|
||||
|
||||
/**
|
||||
* 检查当前token 是否已经[临时过期],如果已经过期则抛出异常
|
||||
*/
|
||||
public static void checkActivityTimeout() {
|
||||
stpLogic.checkActivityTimeout();
|
||||
}
|
||||
|
||||
/**
|
||||
* 续签当前token:(将 [最后操作时间] 更新为当前时间戳)
|
||||
* <h1>请注意: 即时token已经 [临时过期] 也可续签成功,
|
||||
* 如果此场景下需要提示续签失败,可在此之前调用 checkActivityTimeout() 强制检查是否过期即可 </h1>
|
||||
*/
|
||||
public static void updateLastActivityToNow() {
|
||||
stpLogic.updateLastActivityToNow();
|
||||
}
|
||||
|
||||
|
||||
// =================== 过期时间相关 ===================
|
||||
|
||||
/**
|
||||
* 获取当前登录者的token剩余有效时间 (单位: 秒)
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getTimeout() {
|
||||
public static long getTimeout() {
|
||||
return stpLogic.getTokenTimeout();
|
||||
}
|
||||
|
||||
@@ -213,7 +265,7 @@ public class StpUserUtil {
|
||||
* @param loginId 指定loginId
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getTimeoutByLoginId(Object loginId) {
|
||||
public static long getTimeoutByLoginId(Object loginId) {
|
||||
return stpLogic.getTokenTimeoutByLoginId(loginId);
|
||||
}
|
||||
|
||||
@@ -221,7 +273,7 @@ public class StpUserUtil {
|
||||
* 获取当前登录者的Session剩余有效时间 (单位: 秒)
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getSessionTimeout() {
|
||||
public static long getSessionTimeout() {
|
||||
return stpLogic.getSessionTimeout();
|
||||
}
|
||||
|
||||
@@ -230,55 +282,72 @@ public class StpUserUtil {
|
||||
* @param loginId 指定loginId
|
||||
* @return token剩余有效时间
|
||||
*/
|
||||
public long getSessionTimeoutByLoginId(Object loginId) {
|
||||
public static long getSessionTimeoutByLoginId(Object loginId) {
|
||||
return stpLogic.getSessionTimeoutByLoginId(loginId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前token[临时过期]剩余有效时间 (单位: 秒)
|
||||
* @return token[临时过期]剩余有效时间
|
||||
*/
|
||||
public static long getTokenActivityTimeout() {
|
||||
return stpLogic.getTokenActivityTimeout();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定token[临时过期]剩余有效时间 (单位: 秒)
|
||||
* @param tokenValue 指定token
|
||||
* @return token[临时过期]剩余有效时间
|
||||
*/
|
||||
public static long getTokenActivityTimeoutByToken(String tokenValue) {
|
||||
return stpLogic.getTokenActivityTimeoutByToken(tokenValue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// =================== 权限验证操作 ===================
|
||||
|
||||
/**
|
||||
* 指定loginId是否含有指定权限
|
||||
* @param loginId .
|
||||
* @param pcode .
|
||||
* @return .
|
||||
/**
|
||||
* 指定账号id是否含有指定权限
|
||||
* @param loginId 账号id
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public static boolean hasPermission(Object loginId, Object pcode) {
|
||||
return stpLogic.hasPermission(loginId, pcode);
|
||||
public static boolean hasPermission(Object loginId, String permissionCode) {
|
||||
return stpLogic.hasPermission(loginId, permissionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前会话是否含有指定权限
|
||||
* @param pcode .
|
||||
* @return .
|
||||
/**
|
||||
* 当前账号id是否含有指定权限
|
||||
* @param permissionCode 权限码
|
||||
* @return 是否含有指定权限
|
||||
*/
|
||||
public static boolean hasPermission(Object pcode) {
|
||||
return stpLogic.hasPermission(pcode);
|
||||
public static boolean hasPermission(String permissionCode) {
|
||||
return stpLogic.hasPermission(permissionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前账号是否含有指定权限 , 没有就抛出异常
|
||||
* @param pcode .
|
||||
/**
|
||||
* 当前账号是否含有指定权限, 没有就抛出异常
|
||||
* @param permissionCode 权限码
|
||||
*/
|
||||
public static void checkPermission(Object pcode) {
|
||||
stpLogic.checkPermission(pcode);
|
||||
public static void checkPermission(String permissionCode) {
|
||||
stpLogic.checkPermission(permissionCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前账号是否含有指定权限 , 【指定多个,必须全都有】
|
||||
* @param pcodeArray .
|
||||
/**
|
||||
* 当前账号是否含有指定权限, [指定多个,必须全都有]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public static void checkPermissionAnd(Object... pcodeArray) {
|
||||
stpLogic.checkPermissionAnd(pcodeArray);
|
||||
public static void checkPermissionAnd(String... permissionCodeArray) {
|
||||
stpLogic.checkPermissionAnd(permissionCodeArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】
|
||||
* @param pcodeArray .
|
||||
/**
|
||||
* 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
|
||||
* @param permissionCodeArray 权限码数组
|
||||
*/
|
||||
public static void checkPermissionOr(Object... pcodeArray) {
|
||||
stpLogic.checkPermissionOr(pcodeArray);
|
||||
public static void checkPermissionOr(String... permissionCodeArray) {
|
||||
stpLogic.checkPermissionOr(permissionCodeArray);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -51,7 +51,7 @@ public class TestController {
|
||||
public AjaxJson jur() {
|
||||
System.out.println("======================= 进入方法,测试权限接口 ========================= ");
|
||||
|
||||
System.out.println("是否具有权限101" + StpUtil.hasPermission(101));
|
||||
System.out.println("是否具有权限101" + StpUtil.hasPermission("101"));
|
||||
System.out.println("是否具有权限user-add" + StpUtil.hasPermission("user-add"));
|
||||
System.out.println("是否具有权限article-get" + StpUtil.hasPermission("article-get"));
|
||||
|
||||
|
@@ -24,7 +24,7 @@ public class SaCheckInterceptor implements HandlerInterceptor {
|
||||
public StpLogic stpLogic = null;
|
||||
|
||||
/**
|
||||
* 创建,并指定一个默认的 StpLogic
|
||||
* 创建,并指定一个默认的 StpLogic
|
||||
*/
|
||||
public SaCheckInterceptor() {
|
||||
this(StpUtil.stpLogic);
|
||||
@@ -52,52 +52,36 @@ public class SaCheckInterceptor implements HandlerInterceptor {
|
||||
}
|
||||
HandlerMethod method = (HandlerMethod ) handler;
|
||||
|
||||
// 验证登录
|
||||
// ----------- 验证登录
|
||||
if(method.hasMethodAnnotation(SaCheckLogin.class) || method.getBeanType().isAnnotationPresent(SaCheckLogin.class)) {
|
||||
stpLogic.checkLogin();
|
||||
}
|
||||
|
||||
// 获取权限注解
|
||||
// ----------- 验证权限
|
||||
// 验证方法上的
|
||||
SaCheckPermission scp = method.getMethodAnnotation(SaCheckPermission.class);
|
||||
if(scp == null) {
|
||||
scp = method.getBeanType().getAnnotation(SaCheckPermission.class);
|
||||
if(scp != null) {
|
||||
String[] permissionCodeArray = scp.value();
|
||||
if(scp.isAnd()) {
|
||||
stpLogic.checkPermissionAnd(permissionCodeArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkPermissionOr(permissionCodeArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
if(scp == null) {
|
||||
return true;
|
||||
// 验证类上的
|
||||
scp = method.getBeanType().getAnnotation(SaCheckPermission.class);
|
||||
if(scp != null) {
|
||||
String[] permissionCodeArray = scp.value();
|
||||
if(scp.isAnd()) {
|
||||
stpLogic.checkPermissionAnd(permissionCodeArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkPermissionOr(permissionCodeArray); // 有一个就行了
|
||||
}
|
||||
}
|
||||
|
||||
// 开始验证权限
|
||||
Object[] codeArray = concatAbc(scp.value(), scp.valueInt(), scp.valueLong());
|
||||
if(scp.isAnd()) {
|
||||
stpLogic.checkPermissionAnd(codeArray); // 必须全部都有
|
||||
} else {
|
||||
stpLogic.checkPermissionOr(codeArray); // 有一个就行了
|
||||
}
|
||||
|
||||
// 通过验证
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并三个数组
|
||||
* @param a .
|
||||
* @param b .
|
||||
* @param c .
|
||||
* @return .
|
||||
*/
|
||||
private Object[] concatAbc(String[] a, int[] b, long[] c) {
|
||||
// 循环赋值
|
||||
Object[] d = new Object[a.length + b.length + c.length];
|
||||
for (int i = 0; i < a.length; i++) {
|
||||
d[i] = a[i];
|
||||
}
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
d[a.length + i] = b[i];
|
||||
}
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
d[a.length + b.length + i] = c[i];
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user