权限码限定必须为String类型

This commit is contained in:
shengzhang
2020-12-28 01:14:34 +08:00
parent d3792ad286
commit 43308bf593
8 changed files with 184 additions and 131 deletions

View File

@@ -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");

View File

@@ -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);
}

View File

@@ -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"));