1
0
mirror of synced 2026-05-22 14:43:15 +00:00

完善注释

This commit is contained in:
shengzhang
2020-12-26 20:54:15 +08:00
parent 97ad4a783b
commit 6277a1841b
29 changed files with 285 additions and 258 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
<!-- 所有模块 -->
<modules>
<module>sp-token-core</module>
<module>sa-token-core</module>
<module>sa-token-spring-boot-starter</module>
</modules>
@@ -15,7 +15,7 @@ import cn.dev33.satoken.stp.StpInterfaceDefaultImpl;
import cn.dev33.satoken.util.SaTokenInsideUtil;
/**
* 管理sa-token所有对象
* 管理sa-token所有接口对象
* @author kong
*
*/
@@ -1,15 +1,19 @@
package cn.dev33.satoken.action;
/**
* sa-token内置操作接口
* @author kong
*
*/
public interface SaTokenAction {
/**
* 生成一个token
* @param loginId 账号id
* @param loginKey 登录标识key
* @param loginKey 账号标识key
* @return 一个token
*/
public String createToken(Object loginId, String loginKey);
}
@@ -40,11 +40,11 @@ public class SaTokenActionDefaultImpl implements SaTokenAction {
else if(tokenStyle.equals("random-128")) {
return SaTokenInsideUtil.getRandomString(128);
}
// tik风格
// tik风格 (2_14_16)
else if(tokenStyle.equals("tik")) {
return SaTokenInsideUtil.getRandomString(2) + "_" + SaTokenInsideUtil.getRandomString(14) + "_" + SaTokenInsideUtil.getRandomString(16) + "__";
}
// 默认
// 默认,还是uuid
else {
return UUID.randomUUID().toString();
}
@@ -6,7 +6,8 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 标注一个路由方法,当前会话必须已登录才能通过
* 标注一个路由方法,当前会话必须已登录才能通过
* <p> 可标注在类上,其效果等同于标注在此类的所有方法上
* @author kong
*
*/
@@ -7,6 +7,7 @@ import java.lang.annotation.Target;
/**
* 标注一个路由方法,当前会话必须具有指定权限才可以通过
* <p> 可标注在类上,其效果等同于标注在此类的所有方法上
* @author kong
*
*/
@@ -15,26 +16,26 @@ import java.lang.annotation.Target;
public @interface SaCheckPermission {
/**
* 权限码数组 String类型
* @return .
* 需要验证的权限码
* @return 需要验证的权限码
*/
String [] value() default {};
/**
* 权限码数组 int类型
* @return .
* 需要验证的权限码 (int类型)
* @return 需要验证的权限码 (int类型)
*/
int [] valueInt() default {};
/**
* 权限码数组 long类型
* @return .
* 需要验证的权限码 (long类型)
* @return 需要验证的权限码 (long类型)
*/
long [] valueLong() default {};
/**
* 是否属于and型验证 true=必须全部具有,false=只要具有一个就可以通过
* @return .
* 是否属于and型验证,true=必须全部具有,false=只要具有一个就可以通过
* @return 是否属于and型验证
*/
boolean isAnd() default true;
@@ -1,22 +1,56 @@
package cn.dev33.satoken.config;
/**
* sa-token 配置类
* sa-token 配置类Model
* @author kong
*
*/
public class SaTokenConfig {
private String tokenName = "satoken"; // token名称 (同时也是cookie名称)
private long timeout = 30 * 24 * 60 * 60; // token有效期,单位s 默认30天
private long activityTimeout = -1; // token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期)
private Boolean isShare = true; // 在多人登录同一账号时,是否共享会话 (为true时共用一个,为false时新登录挤掉旧登录)
private Boolean isReadBody = true; // 是否尝试从请求体里读取token
private Boolean isReadHead = true; // 是否尝试从header里读取token
private Boolean isReadCookie = true; // 是否尝试从cookie里读取token
private String tokenStyle = "uuid"; // token风格
/**
* token名称 (同时也是cookie名称)
*/
private String tokenName = "satoken";
private Boolean isV = true; // 是否在初始化配置时打印版本字符画
/**
* token有效期,单位/秒 默认30天, -1代表永久
*/
private long timeout = 30 * 24 * 60 * 60;
/**
* token临时有效期 (指定时间内无操作就视为token过期) 单位/秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期)
*/
private long activityTimeout = -1;
/**
* 在多人登录同一账号时,是否共享会话 (为true时共用一个,为false时新登录挤掉旧登录)
*/
private Boolean isShare = true;
/**
* 是否尝试从请求体里读取token
*/
private Boolean isReadBody = true;
/**
* 是否尝试从header里读取token
*/
private Boolean isReadHead = true;
/**
* 是否尝试从cookie里读取token
*/
private Boolean isReadCookie = true;
/**
* token风格
*/
private String tokenStyle = "uuid";
/**
* 是否在初始化配置时打印版本字符画
*/
private Boolean isV = true;
@@ -149,7 +183,9 @@ public class SaTokenConfig {
/**
* 将对象转为String字符串
*/
@Override
public String toString() {
return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", activityTimeout=" + activityTimeout
@@ -8,7 +8,7 @@ import java.util.Map;
import java.util.Properties;
/**
* 创建一个配置文件
* sa-token配置文件创建工厂类
* @author kong
*
*/
@@ -16,7 +16,7 @@ public class SaTokenConfigFactory {
/**
* 默认配置文件地址
* 默认配置文件地址
*/
public static String configPath = "sa-token.properties";
@@ -102,7 +102,7 @@ public class SaTokenConfigFactory {
* 将字符串转化为指定数据类型
* @param str 值
* @param cs 要转换的类型
* @return .
* @return 转化好的结果
*/
@SuppressWarnings("unchecked")
private static <T>T getObjectByClass(String str, Class<T> cs){
@@ -12,41 +12,37 @@ import javax.servlet.http.HttpServletResponse;
public interface SaTokenCookie {
/**
* 获取指定cookie .
*
* @param request .
* @param cookieName .
* @return .
* 在request对象中获取指定Cookie
* @param request request对象
* @param cookieName Cookie名称
* @return 查找到的Cookie对象
*/
public Cookie getCookie(HttpServletRequest request, String cookieName);
/**
* 添加cookie
*
* @param response .
* @param name .
* @param value .
* @param path .
* @param timeout .
* 添加Cookie
* @param response response对象
* @param name Cookie名称
* @param value Cookie值
* @param path Cookie路径
* @param timeout 过期时间 (秒)
*/
public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout);
/**
* 删除cookie .
*
* @param request .
* @param response .
* @param name .
* 删除Cookie
* @param request request对象
* @param response response对象
* @param name Cookie名称
*/
public void delCookie(HttpServletRequest request, HttpServletResponse response, String name);
/**
* 修改cookie的value值
*
* @param request .
* @param response .
* @param name .
* @param value .
* 修改Cookie的value值
* @param request request对象
* @param response response对象
* @param name Cookie名称
* @param value Cookie值
*/
public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value);
@@ -14,6 +14,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/**
* 获取指定cookie
*/
@Override
public Cookie getCookie(HttpServletRequest request, String cookieName) {
return SaTokenCookieUtil.getCookie(request, cookieName);
}
@@ -21,6 +22,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/**
* 添加cookie
*/
@Override
public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) {
SaTokenCookieUtil.addCookie(response, name, value, path, timeout);
}
@@ -28,6 +30,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/**
* 删除cookie
*/
@Override
public void delCookie(HttpServletRequest request, HttpServletResponse response, String name) {
SaTokenCookieUtil.delCookie(request, response, name);
}
@@ -35,6 +38,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/**
* 修改cookie的value值
*/
@Override
public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value) {
SaTokenCookieUtil.updateCookie(request, response, name, value);
}
@@ -5,19 +5,16 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* cookie操作工具类
*
* @author kong
*
* Cookie操作工具类
* @author kong
*/
public class SaTokenCookieUtil {
/**
* 获取指定cookie .
*
* @param request .
* @param cookieName .
* @return .
* 在request对象中获取指定Cookie
* @param request request对象
* @param cookieName Cookie名称
* @return 查找到的Cookie对象
*/
public static Cookie getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();
@@ -32,13 +29,12 @@ public class SaTokenCookieUtil {
}
/**
* 添加cookie
*
* @param response .
* @param name .
* @param value .
* @param path .
* @param timeout .
* 添加cookie
* @param response response
* @param name Cookie名称
* @param value Cookie值
* @param path Cookie写入路径
* @param timeout Cookie有效期 (秒)
*/
public static void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) {
Cookie cookie = new Cookie(name, value);
@@ -51,11 +47,10 @@ public class SaTokenCookieUtil {
}
/**
* 删除cookie .
*
* @param request .
* @param response .
* @param name .
* 删除Cookie
* @param request request对象
* @param response response对象
* @param name Cookie名称
*/
public static void delCookie(HttpServletRequest request, HttpServletResponse response, String name) {
Cookie[] cookies = request.getCookies();
@@ -70,12 +65,11 @@ public class SaTokenCookieUtil {
}
/**
* 修改cookie的value值
*
* @param request .
* @param response .
* @param name .
* @param value .
* 修改cookie的value值
* @param request request对象
* @param response response对象
* @param name Cookie名称
* @param value Cookie值
*/
public static void updateCookie(HttpServletRequest request, HttpServletResponse response, String name,
String value) {
@@ -4,8 +4,7 @@ import cn.dev33.satoken.session.SaSession;
/**
* sa-token持久层的接口
* @author kong
*
* @author kong
*/
public interface SaTokenDao {
@@ -19,17 +18,17 @@ public interface SaTokenDao {
/**
* 根据key获取value ,如果没有,则返回空
* 根据key获取value,如果没有,则返回空
* @param key 键名称
* @return value
*/
public String getValue(String key);
/**
* 写入指定key-value键值对,并设定过期时间 (单位秒)
* 写入指定key-value键值对,并设定过期时间 (单位: 秒)
* @param key 键名称
* @param value 值
* @param timeout 过期时间,单位:s
* @param timeout 过期时间 (单位: 秒)
*/
public void setValue(String key, String value, long timeout);
@@ -55,16 +54,16 @@ public interface SaTokenDao {
/**
* 根据指定key的session,如果没有,则返回空
* 根据指定key的Session,如果没有,则返回空
* @param sessionId 键名称
* @return SaSession
*/
public SaSession getSession(String sessionId);
/**
* 将指定session持久化
* 将指定Session持久化
* @param session 要保存的session对象
* @param timeout 过期时间单位: s
* @param timeout 过期时间 (单位: 秒)
*/
public void saveSession(SaSession session, long timeout);
@@ -83,7 +82,7 @@ public interface SaTokenDao {
/**
* 获取指定SaSession的剩余存活时间 (单位: 秒)
* @param sessionId 指定SaSession
* @return 这个SaSession的剩余存活时间
* @return 这个SaSession的剩余存活时间 (单位: 秒)
*/
public long getSessionTimeout(String sessionId);
@@ -18,7 +18,7 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
public Map<String, Object> dataMap = new HashMap<String, Object>();
/**
* 过期时间集合 (单位: 毫秒) , 记录所有key的到期时间 [注意不是剩余存活时间]
* 过期时间集合 (单位: 毫秒) , 记录所有key的到期时间 [注意不是剩余存活时间]
*/
public Map<String, Long> expireMap = new HashMap<String, Long>();
@@ -103,7 +103,6 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
}
}
/**
* 获取指定key的剩余存活时间 (单位:秒)
*/
@@ -4,14 +4,13 @@ import java.util.Arrays;
import java.util.List;
/**
* 没有登陆抛出的异常
* @author kong
*
* 一个异常:代表用户没有登录
* @author kong
*/
public class NotLoginException extends RuntimeException {
/**
*
*
*/
private static final long serialVersionUID = 6806129545290130142L;
@@ -59,7 +58,7 @@ public class NotLoginException extends RuntimeException {
private String type;
/**
* 获取异常类型
* @return
* @return 异常类型
*/
public String getType() {
return type;
@@ -72,7 +71,7 @@ public class NotLoginException extends RuntimeException {
private String loginKey;
/**
* 获得loginKey
* @return login_key
* @return loginKey
*/
public String getLoginKey() {
return loginKey;
@@ -81,16 +80,8 @@ public class NotLoginException extends RuntimeException {
// /**
// * 创建一个
// */
// public NotLoginException() {
// this(StpUtil.stpLogic.loginKey);
// }
/**
* 创建一个
* 构造方法创建一个
* @param message 异常消息
* @param loginKey loginKey
* @param type 类型
@@ -103,8 +94,8 @@ public class NotLoginException extends RuntimeException {
}
/**
* 静态方法构建一个NotLoginException
* @param loginKey loginKey
* 静态方法构建一个NotLoginException
* @param loginKey loginKey
* @param type 场景类型
* @return 构建完毕的异常对象
*/
@@ -15,7 +15,7 @@ public class NotPermissionException extends RuntimeException {
private static final long serialVersionUID = 6806129545290130142L;
/**
* 权限码
* 权限码
*/
private Object code;
/**
@@ -26,12 +26,12 @@ public class NotPermissionException extends RuntimeException {
}
/**
* login_key
* loginKey
*/
private String loginKey;
/**
* 获得login_key
* @return login_key
* 获得loginKey
* @return loginKey
*/
public String getLoginKey() {
return loginKey;
@@ -13,6 +13,10 @@ public class SaTokenException extends RuntimeException {
private static final long serialVersionUID = 6806129545290130132L;
/**
* 构建一个异常
* @param message 异常描述信息
*/
public SaTokenException(String message) {
super(message);
}
@@ -12,14 +12,14 @@ public interface SaTokenServlet {
/**
* 获取当前请求的Request对象
* 获取当前请求的 Request 对象
* @return 当前请求的Request对象
*/
public HttpServletRequest getRequest();
/**
* 获取当前会话的 response
* @return 当前请求的response
* 获取当前请求的 Response 对象
* @return 当前请求的response对象
*/
public HttpServletResponse getResponse();
@@ -4,7 +4,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* sa-token 对Servlet的相关操作 接口默认实现类
* sa-token 对SaTokenServlet接口默认实现类
* @author kong
*
*/
@@ -21,10 +21,12 @@ public class SaSession implements Serializable {
* 会话id
*/
private String id;
/**
* 当前会话创建时间
*/
private long createTime;
/**
* 当前会话键值对
*/
@@ -32,8 +34,8 @@ public class SaSession implements Serializable {
/**
* 构建一个 session对象
* @param id sessionId
* 构建一个 session对象
* @param id session的id
*/
public SaSession(String id) {
this.id = id;
@@ -50,7 +52,7 @@ public class SaSession implements Serializable {
}
/**
* 返回当前会话创建时间
* 返回当前会话创建时间
* @return 时间戳
*/
public long getCreateTime() {
@@ -58,7 +60,7 @@ public class SaSession implements Serializable {
}
/**
* 写入一个值
* 写入一个值
* @param key 名称
* @param value 值
*/
@@ -12,13 +12,16 @@ public class SaSessionCustomUtil {
/**
* 添加上指定前缀,防止恶意伪造session
*/
public static String session_key = "custom";
public static String sessionKey = "custom";
/** 组织一下key */
public static String getSessionKey(String sessionId) {
return SaTokenManager.getConfig().getTokenName() + ":" + session_key + ":session:" + sessionId;
return SaTokenManager.getConfig().getTokenName() + ":" + sessionKey + ":session:" + sessionId;
}
/**
* 指定key的session是否存在
* 指定key的session是否存在
* @param sessionId session的id
* @return 是否存在
*/
@@ -27,7 +30,7 @@ public class SaSessionCustomUtil {
}
/**
* 获取指定key的session
* 获取指定key的session
* @param sessionId key
* @param isCreate 如果没有,是否新建并返回
* @return SaSession
@@ -51,7 +54,7 @@ public class SaSessionCustomUtil {
}
/**
* 删除指定key的session
* 删除指定key的session
* @param sessionId 删除指定key
*/
public static void deleteSessionById(String sessionId) {
@@ -9,10 +9,10 @@ import java.util.List;
public interface StpInterface {
/**
* 返回指定login_id所拥有的权限码集合
* 返回指定loginId所拥有的权限码集合
* @param loginId 账号id
* @param loginKey 具体的stp标识
* @return .
* @return 该账号id具有的权限码集合
*/
public List<Object> getPermissionCodeList(Object loginId, String loginKey);
@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* 权限验证接口 默认实现
* 对StpInterface接口默认实现
* @author kong
*/
public class StpInterfaceDefaultImpl implements StpInterface {
@@ -14,7 +14,7 @@ import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.util.SaTokenInsideUtil;
/**
* sa-token 权限验证,逻辑 实现类
* sa-token 权限验证,逻辑实现类
* <p>
* (stp = sa-token-permission 的缩写 )
* @author kong
@@ -91,8 +91,8 @@ public class StpLogic {
/**
* 获取指定loginId的tokenValue
* @param loginId .
* @return .
* @param loginId 账号id
* @return token值
*/
public String getTokenValueByLoginId(Object loginId) {
return SaTokenManager.getSaTokenDao().getValue(getKeyLoginId(loginId));
@@ -128,7 +128,7 @@ public class StpLogic {
/**
* 在当前会话上登录id
* @param loginId 登录id ,建议的类型:(long | int | String
* @param loginId 登录id,建议的类型:(long | int | String
*/
public void setLoginId(Object loginId) {
@@ -228,7 +228,7 @@ public class StpLogic {
// 查询相关
/**
* 获取当前会话是否已经登录
* 获取当前会话是否已经登录
* @return 是否已登录
*/
public boolean isLogin() {
@@ -237,15 +237,15 @@ public class StpLogic {
}
/**
* 检验当前会话是否已经登录,如未登录,则抛出异常
* 检验当前会话是否已经登录,如未登录,则抛出异常
*/
public void checkLogin() {
getLoginId();
}
/**
* 获取当前会话登录id, 如果未登录,则抛出异常
* @return .
* 获取当前会话账号id, 如果未登录,则抛出异常
* @return 账号id
*/
public Object getLoginId() {
// 如果获取不到token,则抛出:无token
@@ -278,7 +278,7 @@ public class StpLogic {
}
/**
* 获取当前会话登录id, 如果未登录,则返回默认值
* 获取当前会话登录id, 如果未登录,则返回默认值
* @param <T> 返回类型
* @param defaultValue 默认值
* @return 登录id
@@ -304,8 +304,8 @@ public class StpLogic {
}
/**
* 获取当前会话登录id, 如果未登录,则返回null
* @return .
* 获取当前会话登录id, 如果未登录,则返回null
* @return 账号id
*/
public Object getLoginIdDefaultNull() {
// 如果连token都是空的,则直接返回
@@ -328,7 +328,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为String
* @return 登录id
* @return 账号id
*/
public String getLoginIdAsString() {
return String.valueOf(getLoginId());
@@ -336,7 +336,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为int
* @return 登录id
* @return 账号id
*/
public int getLoginIdAsInt() {
// Object loginId = getLoginId();
@@ -348,7 +348,7 @@ public class StpLogic {
/**
* 获取当前会话登录id, 并转换为long
* @return 登录id
* @return 账号id
*/
public long getLoginIdAsLong() {
// Object loginId = getLoginId();
@@ -378,9 +378,9 @@ public class StpLogic {
/**
* 获取指定key的session, 如果session尚未创建,isCreate=是否新建并返回
* @param sessionId .
* @param isCreate .
* @return .
* @param sessionId sessionId
* @param isCreate 是否新建
* @return session对象
*/
protected SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId);
@@ -392,8 +392,8 @@ public class StpLogic {
}
/**
* 获取指定loginId的session, 如果没有isCreate=是否新建并返回
* @param loginId 登录id
* 获取指定loginId的session, 如果session尚未创建isCreate=是否新建并返回
* @param loginId 账号id
* @param isCreate 是否新建
* @return SaSession
*/
@@ -402,9 +402,9 @@ public class StpLogic {
}
/**
* 获取指定loginId的session
* @param loginId .
* @return .
* 获取指定loginId的session,如果session尚未创建,则新建并返回
* @param loginId 账号id
* @return session会话
*/
public SaSession getSessionByLoginId(Object loginId) {
return getSessionByLoginId(loginId, true);
@@ -412,7 +412,7 @@ public class StpLogic {
/**
* 获取当前会话的session, 如果session尚未创建,isCreate=是否新建并返回
* @param isCreate 是否新建
* @param isCreate 是否新建
* @return 当前会话的session
*/
public SaSession getSession(boolean isCreate) {
@@ -420,7 +420,7 @@ public class StpLogic {
}
/**
* 获取当前会话的session
* 获取当前会话的session,如果session尚未创建,则新建并返回
* @return 当前会话的session
*/
public SaSession getSession() {
@@ -600,43 +600,43 @@ public class StpLogic {
// =================== 权限验证操作 ===================
/**
* 指定loginId是否含有指定权限
* @param loginId .
* @param pcode .
* @return .
* 指定账号id是否含有指定权限
* @param loginId 账号id
* @param permissionCode 权限码
* @return 是否含有指定权限
*/
public boolean hasPermission(Object loginId, Object pcode) {
public boolean hasPermission(Object loginId, Object permissionCode) {
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
return !(pcodeList == null || pcodeList.contains(pcode) == false);
return !(pcodeList == null || pcodeList.contains(permissionCode) == false);
}
/**
* 当前会话是否含有指定权限
* @param pcode .
* @return .
* 当前账号id是否含有指定权限
* @param permissionCode 权限码
* @return 是否含有指定权限
*/
public boolean hasPermission(Object pcode) {
return hasPermission(getLoginId(), pcode);
public boolean hasPermission(Object permissionCode) {
return hasPermission(getLoginId(), permissionCode);
}
/**
* 当前账号是否含有指定权限 没有就抛出异常
* @param pcode .
* 当前账号是否含有指定权限, 没有就抛出异常
* @param permissionCode 权限码
*/
public void checkPermission(Object pcode) {
if(hasPermission(pcode) == false) {
throw new NotPermissionException(pcode, this.loginKey);
public void checkPermission(Object permissionCode) {
if(hasPermission(permissionCode) == false) {
throw new NotPermissionException(permissionCode, this.loginKey);
}
}
/**
* 当前账号是否含有指定权限 指定多个,必须全都有
* @param pcodeArray .
* 当前账号是否含有指定权限, [指定多个,必须全都有]
* @param permissionCodeArray 权限码数组
*/
public void checkPermissionAnd(Object... pcodeArray){
public void checkPermissionAnd(Object... permissionCodeArray){
Object loginId = getLoginId();
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
for (Object pcode : pcodeArray) {
for (Object pcode : permissionCodeArray) {
if(pcodeList.contains(pcode) == false) {
throw new NotPermissionException(pcode, this.loginKey); // 没有权限抛出异常
}
@@ -644,19 +644,19 @@ public class StpLogic {
}
/**
* 当前账号是否含有指定权限 指定多个,有一个就可以了】
* @param pcodeArray .
* 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
* @param permissionCodeArray 权限码数组
*/
public void checkPermissionOr(Object... pcodeArray){
public void checkPermissionOr(Object... permissionCodeArray){
Object loginId = getLoginId();
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
for (Object pcode : pcodeArray) {
for (Object pcode : permissionCodeArray) {
if(pcodeList.contains(pcode) == true) {
return; // 有的话提前退出
}
}
if(pcodeArray.length > 0) {
throw new NotPermissionException(pcodeArray[0], this.loginKey); // 没有权限抛出异常
if(permissionCodeArray.length > 0) {
throw new NotPermissionException(permissionCodeArray[0], this.loginKey); // 没有权限抛出异常
}
}
@@ -672,7 +672,7 @@ public class StpLogic {
}
/**
* 获取key tokenValue 持久化
* @param tokenValue .
* @param tokenValue token值
* @return key
*/
public String getKeyTokenValue(String tokenValue) {
@@ -680,7 +680,7 @@ public class StpLogic {
}
/**
* 获取key id 持久化
* @param loginId .
* @param loginId 账号id
* @return key
*/
public String getKeyLoginId(Object loginId) {
@@ -688,7 +688,7 @@ public class StpLogic {
}
/**
* 获取key session 持久化
* @param loginId .
* @param loginId 账号id
* @return key
*/
public String getKeySession(Object loginId) {
@@ -696,7 +696,7 @@ public class StpLogic {
}
/**
* 获取key: 指定token的最后操作时间 持久化
* @param tokenValue token
* @param tokenValue token
* @return key
*/
public String getKeyLastActivityTime(String tokenValue) {
@@ -33,22 +33,22 @@ public class StpUtil {
}
/**
* 获取指定loginId的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信息
@@ -57,11 +57,12 @@ public class StpUtil {
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);
@@ -92,31 +93,31 @@ public class StpUtil {
// 查询相关
/**
* 获取当前会话是否已经登录
/**
* 获取当前会话是否已经登录
* @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, 如果未登录,则返回默认值
* 获取当前会话登录id, 如果未登录,则返回默认值
* @param <T> 返回类型
* @param defaultValue 默认值
* @return 登录id
@@ -124,10 +125,10 @@ public class StpUtil {
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();
@@ -135,7 +136,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为String
* @return 登录id
* @return 账号id
*/
public static String getLoginIdAsString() {
return stpLogic.getLoginIdAsString();
@@ -143,7 +144,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为int
* @return 登录id
* @return 账号id
*/
public static int getLoginIdAsInt() {
return stpLogic.getLoginIdAsInt();
@@ -151,7 +152,7 @@ public class StpUtil {
/**
* 获取当前会话登录id, 并转换为long
* @return 登录id
* @return 账号id
*/
public static long getLoginIdAsLong() {
return stpLogic.getLoginIdAsLong();
@@ -170,8 +171,8 @@ public class StpUtil {
// =================== session相关 ===================
/**
* 获取指定loginId的session, 如果没有isCreate=是否新建并返回
* @param loginId 登录id
* 获取指定loginId的session, 如果session尚未创建isCreate=是否新建并返回
* @param loginId 账号id
* @param isCreate 是否新建
* @return SaSession
*/
@@ -180,26 +181,27 @@ public class StpUtil {
}
/**
* 获取指定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, 如果没有isCreate=是否新建并返回
* @param isCreate 是否新建
* 获取当前会话的session, 如果session尚未创建isCreate=是否新建并返回
* @param isCreate 是否新建
* @return 当前会话的session
*/
public static SaSession getSession(boolean isCreate) {
return stpLogic.getSession(isCreate);
}
/**
* 获取当前会话的session
* @return .
* 获取当前会话的session,如果session尚未创建,则新建并返回
* @return 当前会话的session
*/
public static SaSession getSession() {
return stpLogic.getSession();
@@ -282,47 +284,47 @@ public class StpUtil {
// =================== 权限验证操作 ===================
/**
* 指定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);
}
/**
* 当前会话是否含有指定权限
* @param pcode .
* @return .
/**
* 当前账号id是否含有指定权限
* @param permissionCode 权限码
* @return 是否含有指定权限
*/
public static boolean hasPermission(Object pcode) {
return stpLogic.hasPermission(pcode);
public static boolean hasPermission(Object permissionCode) {
return stpLogic.hasPermission(permissionCode);
}
/**
* 当前账号是否含有指定权限 没有就抛出异常
* @param pcode .
/**
* 当前账号是否含有指定权限, 没有就抛出异常
* @param permissionCode 权限码
*/
public static void checkPermission(Object pcode) {
stpLogic.checkPermission(pcode);
public static void checkPermission(Object permissionCode) {
stpLogic.checkPermission(permissionCode);
}
/**
* 当前账号是否含有指定权限 指定多个,必须全都有
* @param pcodeArray .
/**
* 当前账号是否含有指定权限, [指定多个,必须全都有]
* @param permissionCodeArray 权限码数组
*/
public static void checkPermissionAnd(Object... pcodeArray) {
stpLogic.checkPermissionAnd(pcodeArray);
public static void checkPermissionAnd(Object... permissionCodeArray) {
stpLogic.checkPermissionAnd(permissionCodeArray);
}
/**
* 当前账号是否含有指定权限 指定多个,有一个就可以了】
* @param pcodeArray .
/**
* 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
* @param permissionCodeArray 权限码数组
*/
public static void checkPermissionOr(Object... pcodeArray) {
stpLogic.checkPermissionOr(pcodeArray);
public static void checkPermissionOr(Object... permissionCodeArray) {
stpLogic.checkPermissionOr(permissionCodeArray);
}
@@ -21,7 +21,7 @@ public class SaTokenInsideUtil {
public static final String GITHUB_URL = "https://github.com/click33/sa-token";
/**
* 打印 sa-token
* 打印 sa-token 版本字符画
*/
public static void printSaToken() {
String str =
@@ -44,7 +44,7 @@ public class SaTokenInsideUtil {
public static final String TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY = "TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY_";
/**
* 生成指定长度的随机字符串
* 生成指定长度的随机字符串
* @param length 字符串的长度
* @return 一个随机字符串
*/
@@ -9,7 +9,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
* 将此注解加到springboot启动类上,即可完成sa-token与springboot的集成
* 将此注解加到springboot启动类上,即可完成sa-token与springboot的集成
* <p>注: v1.7版本以上已不再需要此注解,直接引入sa-token-spring-boot-starter依赖即可
* @author kong
*
*/
@@ -39,8 +39,6 @@ public class SaCheckInterceptor implements HandlerInterceptor {
}
/**
* 每次请求之前触发
*/
@@ -79,10 +77,6 @@ public class SaCheckInterceptor implements HandlerInterceptor {
return true;
}
/**
* 合并三个数组
* @param a .
@@ -20,7 +20,6 @@ public class SaTokenServletSpringImpl implements SaTokenServlet {
return SpringMVCUtil.getRequest();
}
/**
* 获取当前请求的Response对象
*/
@@ -15,7 +15,7 @@ public class SpringMVCUtil {
/**
* 获取当前会话的 request
* @return .
* @return request
*/
public static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
@@ -26,8 +26,8 @@ public class SpringMVCUtil {
}
/**
* 获取当前会话的 response
* @return .
* 获取当前会话的 response
* @return response
*/
public static HttpServletResponse getResponse() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
@@ -37,7 +37,4 @@ public class SpringMVCUtil {
return servletRequestAttributes.getResponse();
}
}