完善注释

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

View File

@@ -18,7 +18,7 @@
<!-- 所有模块 --> <!-- 所有模块 -->
<modules> <modules>
<module>sp-token-core</module> <module>sa-token-core</module>
<module>sa-token-spring-boot-starter</module> <module>sa-token-spring-boot-starter</module>
</modules> </modules>

View File

@@ -15,7 +15,7 @@ import cn.dev33.satoken.stp.StpInterfaceDefaultImpl;
import cn.dev33.satoken.util.SaTokenInsideUtil; import cn.dev33.satoken.util.SaTokenInsideUtil;
/** /**
* 管理sa-token所有对象 * 管理sa-token所有接口对象
* @author kong * @author kong
* *
*/ */

View File

@@ -1,15 +1,19 @@
package cn.dev33.satoken.action; package cn.dev33.satoken.action;
/**
* sa-token内置操作接口
* @author kong
*
*/
public interface SaTokenAction { public interface SaTokenAction {
/** /**
* 生成一个token * 生成一个token
* @param loginId 账号id * @param loginId 账号id
* @param loginKey 登录标识key * @param loginKey 账号标识key
* @return 一个token * @return 一个token
*/ */
public String createToken(Object loginId, String loginKey); public String createToken(Object loginId, String loginKey);
} }

View File

@@ -40,11 +40,11 @@ public class SaTokenActionDefaultImpl implements SaTokenAction {
else if(tokenStyle.equals("random-128")) { else if(tokenStyle.equals("random-128")) {
return SaTokenInsideUtil.getRandomString(128); return SaTokenInsideUtil.getRandomString(128);
} }
// tik风格 // tik风格 (2_14_16)
else if(tokenStyle.equals("tik")) { else if(tokenStyle.equals("tik")) {
return SaTokenInsideUtil.getRandomString(2) + "_" + SaTokenInsideUtil.getRandomString(14) + "_" + SaTokenInsideUtil.getRandomString(16) + "__"; return SaTokenInsideUtil.getRandomString(2) + "_" + SaTokenInsideUtil.getRandomString(14) + "_" + SaTokenInsideUtil.getRandomString(16) + "__";
} }
// 默认 // 默认还是uuid
else { else {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }

View File

@@ -6,7 +6,8 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* 标注一个路由方法,当前会话必须已登录才能通过 * 标注一个路由方法,当前会话必须已登录才能通过
* <p> 可标注在类上,其效果等同于标注在此类的所有方法上
* @author kong * @author kong
* *
*/ */

View File

@@ -7,6 +7,7 @@ import java.lang.annotation.Target;
/** /**
* 标注一个路由方法,当前会话必须具有指定权限才可以通过 * 标注一个路由方法,当前会话必须具有指定权限才可以通过
* <p> 可标注在类上,其效果等同于标注在此类的所有方法上
* @author kong * @author kong
* *
*/ */
@@ -15,26 +16,26 @@ import java.lang.annotation.Target;
public @interface SaCheckPermission { public @interface SaCheckPermission {
/** /**
* 权限码数组 String类型 * 需要验证的权限码
* @return . * @return 需要验证的权限码
*/ */
String [] value() default {}; String [] value() default {};
/** /**
* 权限码数组 int类型 * 需要验证的权限码 (int类型)
* @return . * @return 需要验证的权限码 (int类型)
*/ */
int [] valueInt() default {}; int [] valueInt() default {};
/** /**
* 权限码数组 long类型 * 需要验证的权限码 (long类型)
* @return . * @return 需要验证的权限码 (long类型)
*/ */
long [] valueLong() default {}; long [] valueLong() default {};
/** /**
* 是否属于and型验证 true=必须全部具有false=只要具有一个就可以通过 * 是否属于and型验证true=必须全部具有false=只要具有一个就可以通过
* @return . * @return 是否属于and型验证
*/ */
boolean isAnd() default true; boolean isAnd() default true;

View File

@@ -1,22 +1,56 @@
package cn.dev33.satoken.config; package cn.dev33.satoken.config;
/** /**
* sa-token 配置类 * sa-token 配置类Model
* @author kong * @author kong
* *
*/ */
public class SaTokenConfig { public class SaTokenConfig {
private String tokenName = "satoken"; // token名称 (同时也是cookie名称) /**
private long timeout = 30 * 24 * 60 * 60; // token有效期单位s 默认30天 * token名称 (同时也是cookie名称)
private long activityTimeout = -1; // token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期) */
private Boolean isShare = true; // 在多人登录同一账号时,是否共享会话 (为true时共用一个为false时新登录挤掉旧登录) private String tokenName = "satoken";
private Boolean isReadBody = true; // 是否尝试从请求体里读取token
private Boolean isReadHead = true; // 是否尝试从header里读取token
private Boolean isReadCookie = true; // 是否尝试从cookie里读取token
private String tokenStyle = "uuid"; // token风格
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 @Override
public String toString() { public String toString() {
return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", activityTimeout=" + activityTimeout return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", activityTimeout=" + activityTimeout

View File

@@ -8,7 +8,7 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
/** /**
* 创建一个配置文件 * sa-token配置文件创建工厂类
* @author kong * @author kong
* *
*/ */
@@ -16,7 +16,7 @@ public class SaTokenConfigFactory {
/** /**
* 默认配置文件地址 * 默认配置文件地址
*/ */
public static String configPath = "sa-token.properties"; public static String configPath = "sa-token.properties";
@@ -102,7 +102,7 @@ public class SaTokenConfigFactory {
* 将字符串转化为指定数据类型 * 将字符串转化为指定数据类型
* @param str 值 * @param str 值
* @param cs 要转换的类型 * @param cs 要转换的类型
* @return . * @return 转化好的结果
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private static <T>T getObjectByClass(String str, Class<T> cs){ private static <T>T getObjectByClass(String str, Class<T> cs){

View File

@@ -12,41 +12,37 @@ import javax.servlet.http.HttpServletResponse;
public interface SaTokenCookie { public interface SaTokenCookie {
/** /**
* 获取指定cookie . * 在request对象中获取指定Cookie
* * @param request request对象
* @param request . * @param cookieName Cookie名称
* @param cookieName . * @return 查找到的Cookie对象
* @return .
*/ */
public Cookie getCookie(HttpServletRequest request, String cookieName); public Cookie getCookie(HttpServletRequest request, String cookieName);
/** /**
* 添加cookie * 添加Cookie
* * @param response response对象
* @param response . * @param name Cookie名称
* @param name . * @param value Cookie值
* @param value . * @param path Cookie路径
* @param path . * @param timeout 过期时间 (秒)
* @param timeout .
*/ */
public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout); public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout);
/** /**
* 删除cookie . * 删除Cookie
* * @param request request对象
* @param request . * @param response response对象
* @param response . * @param name Cookie名称
* @param name .
*/ */
public void delCookie(HttpServletRequest request, HttpServletResponse response, String name); public void delCookie(HttpServletRequest request, HttpServletResponse response, String name);
/** /**
* 修改cookie的value值 * 修改Cookie的value值
* * @param request request对象
* @param request . * @param response response对象
* @param response . * @param name Cookie名称
* @param name . * @param value Cookie值
* @param value .
*/ */
public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value); public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value);

View File

@@ -14,6 +14,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/** /**
* 获取指定cookie * 获取指定cookie
*/ */
@Override
public Cookie getCookie(HttpServletRequest request, String cookieName) { public Cookie getCookie(HttpServletRequest request, String cookieName) {
return SaTokenCookieUtil.getCookie(request, cookieName); return SaTokenCookieUtil.getCookie(request, cookieName);
} }
@@ -21,6 +22,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/** /**
* 添加cookie * 添加cookie
*/ */
@Override
public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) { public void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) {
SaTokenCookieUtil.addCookie(response, name, value, path, timeout); SaTokenCookieUtil.addCookie(response, name, value, path, timeout);
} }
@@ -28,6 +30,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/** /**
* 删除cookie * 删除cookie
*/ */
@Override
public void delCookie(HttpServletRequest request, HttpServletResponse response, String name) { public void delCookie(HttpServletRequest request, HttpServletResponse response, String name) {
SaTokenCookieUtil.delCookie(request, response, name); SaTokenCookieUtil.delCookie(request, response, name);
} }
@@ -35,6 +38,7 @@ public class SaTokenCookieDefaultImpl implements SaTokenCookie {
/** /**
* 修改cookie的value值 * 修改cookie的value值
*/ */
@Override
public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value) { public void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, String value) {
SaTokenCookieUtil.updateCookie(request, response, name, value); SaTokenCookieUtil.updateCookie(request, response, name, value);
} }

View File

@@ -5,19 +5,16 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/** /**
* cookie操作工具类 * Cookie操作工具类
* * @author kong
* @author kong
*
*/ */
public class SaTokenCookieUtil { public class SaTokenCookieUtil {
/** /**
* 获取指定cookie . * 在request对象中获取指定Cookie
* * @param request request对象
* @param request . * @param cookieName Cookie名称
* @param cookieName . * @return 查找到的Cookie对象
* @return .
*/ */
public static Cookie getCookie(HttpServletRequest request, String cookieName) { public static Cookie getCookie(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies(); Cookie[] cookies = request.getCookies();
@@ -32,13 +29,12 @@ public class SaTokenCookieUtil {
} }
/** /**
* 添加cookie * 添加cookie
* * @param response response
* @param response . * @param name Cookie名称
* @param name . * @param value Cookie值
* @param value . * @param path Cookie写入路径
* @param path . * @param timeout Cookie有效期 (秒)
* @param timeout .
*/ */
public static void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) { public static void addCookie(HttpServletResponse response, String name, String value, String path, int timeout) {
Cookie cookie = new Cookie(name, value); Cookie cookie = new Cookie(name, value);
@@ -51,11 +47,10 @@ public class SaTokenCookieUtil {
} }
/** /**
* 删除cookie . * 删除Cookie
* * @param request request对象
* @param request . * @param response response对象
* @param response . * @param name Cookie名称
* @param name .
*/ */
public static void delCookie(HttpServletRequest request, HttpServletResponse response, String name) { public static void delCookie(HttpServletRequest request, HttpServletResponse response, String name) {
Cookie[] cookies = request.getCookies(); Cookie[] cookies = request.getCookies();
@@ -70,12 +65,11 @@ public class SaTokenCookieUtil {
} }
/** /**
* 修改cookie的value值 * 修改cookie的value值
* * @param request request对象
* @param request . * @param response response对象
* @param response . * @param name Cookie名称
* @param name . * @param value Cookie值
* @param value .
*/ */
public static void updateCookie(HttpServletRequest request, HttpServletResponse response, String name, public static void updateCookie(HttpServletRequest request, HttpServletResponse response, String name,
String value) { String value) {

View File

@@ -4,8 +4,7 @@ import cn.dev33.satoken.session.SaSession;
/** /**
* sa-token持久层的接口 * sa-token持久层的接口
* @author kong * @author kong
*
*/ */
public interface SaTokenDao { public interface SaTokenDao {
@@ -19,17 +18,17 @@ public interface SaTokenDao {
/** /**
* 根据key获取value ,如果没有,则返回空 * 根据key获取value如果没有则返回空
* @param key 键名称 * @param key 键名称
* @return value * @return value
*/ */
public String getValue(String key); public String getValue(String key);
/** /**
* 写入指定key-value键值对并设定过期时间 (单位秒) * 写入指定key-value键值对并设定过期时间 (单位: 秒)
* @param key 键名称 * @param key 键名称
* @param value 值 * @param value 值
* @param timeout 过期时间单位s * @param timeout 过期时间 (单位: 秒)
*/ */
public void setValue(String key, String value, long timeout); public void setValue(String key, String value, long timeout);
@@ -55,16 +54,16 @@ public interface SaTokenDao {
/** /**
* 根据指定key的session如果没有则返回空 * 根据指定key的Session如果没有则返回空
* @param sessionId 键名称 * @param sessionId 键名称
* @return SaSession * @return SaSession
*/ */
public SaSession getSession(String sessionId); public SaSession getSession(String sessionId);
/** /**
* 将指定session持久化 * 将指定Session持久化
* @param session 要保存的session对象 * @param session 要保存的session对象
* @param timeout 过期时间单位: s * @param timeout 过期时间 (单位: 秒)
*/ */
public void saveSession(SaSession session, long timeout); public void saveSession(SaSession session, long timeout);
@@ -83,7 +82,7 @@ public interface SaTokenDao {
/** /**
* 获取指定SaSession的剩余存活时间 (单位: 秒) * 获取指定SaSession的剩余存活时间 (单位: 秒)
* @param sessionId 指定SaSession * @param sessionId 指定SaSession
* @return 这个SaSession的剩余存活时间 * @return 这个SaSession的剩余存活时间 (单位: 秒)
*/ */
public long getSessionTimeout(String sessionId); public long getSessionTimeout(String sessionId);

View File

@@ -18,7 +18,7 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
public Map<String, Object> dataMap = new HashMap<String, Object>(); public Map<String, Object> dataMap = new HashMap<String, Object>();
/** /**
* 过期时间集合 (单位: 毫秒) , 记录所有key的到期时间 [注意不是剩余存活时间] * 过期时间集合 (单位: 毫秒) , 记录所有key的到期时间 [注意不是剩余存活时间]
*/ */
public Map<String, Long> expireMap = new HashMap<String, Long>(); public Map<String, Long> expireMap = new HashMap<String, Long>();
@@ -103,7 +103,6 @@ public class SaTokenDaoDefaultImpl implements SaTokenDao {
} }
} }
/** /**
* 获取指定key的剩余存活时间 (单位:秒) * 获取指定key的剩余存活时间 (单位:秒)
*/ */

View File

@@ -4,14 +4,13 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
* 没有登陆抛出的异常 * 一个异常:代表用户没有登录
* @author kong * @author kong
*
*/ */
public class NotLoginException extends RuntimeException { public class NotLoginException extends RuntimeException {
/** /**
* *
*/ */
private static final long serialVersionUID = 6806129545290130142L; private static final long serialVersionUID = 6806129545290130142L;
@@ -59,7 +58,7 @@ public class NotLoginException extends RuntimeException {
private String type; private String type;
/** /**
* 获取异常类型 * 获取异常类型
* @return * @return 异常类型
*/ */
public String getType() { public String getType() {
return type; return type;
@@ -72,7 +71,7 @@ public class NotLoginException extends RuntimeException {
private String loginKey; private String loginKey;
/** /**
* 获得loginKey * 获得loginKey
* @return login_key * @return loginKey
*/ */
public String getLoginKey() { public String getLoginKey() {
return loginKey; return loginKey;
@@ -81,16 +80,8 @@ public class NotLoginException extends RuntimeException {
// /**
// * 创建一个
// */
// public NotLoginException() {
// this(StpUtil.stpLogic.loginKey);
// }
/** /**
* 创建一个 * 构造方法创建一个
* @param message 异常消息 * @param message 异常消息
* @param loginKey loginKey * @param loginKey loginKey
* @param type 类型 * @param type 类型
@@ -103,8 +94,8 @@ public class NotLoginException extends RuntimeException {
} }
/** /**
* 静态方法构建一个NotLoginException * 静态方法构建一个NotLoginException
* @param loginKey loginKey * @param loginKey loginKey
* @param type 场景类型 * @param type 场景类型
* @return 构建完毕的异常对象 * @return 构建完毕的异常对象
*/ */

View File

@@ -15,7 +15,7 @@ public class NotPermissionException extends RuntimeException {
private static final long serialVersionUID = 6806129545290130142L; private static final long serialVersionUID = 6806129545290130142L;
/** /**
* 权限码 * 权限码
*/ */
private Object code; private Object code;
/** /**
@@ -26,12 +26,12 @@ public class NotPermissionException extends RuntimeException {
} }
/** /**
* login_key * loginKey
*/ */
private String loginKey; private String loginKey;
/** /**
* 获得login_key * 获得loginKey
* @return login_key * @return loginKey
*/ */
public String getLoginKey() { public String getLoginKey() {
return loginKey; return loginKey;

View File

@@ -13,6 +13,10 @@ public class SaTokenException extends RuntimeException {
private static final long serialVersionUID = 6806129545290130132L; private static final long serialVersionUID = 6806129545290130132L;
/**
* 构建一个异常
* @param message 异常描述信息
*/
public SaTokenException(String message) { public SaTokenException(String message) {
super(message); super(message);
} }

View File

@@ -12,14 +12,14 @@ public interface SaTokenServlet {
/** /**
* 获取当前请求的Request对象 * 获取当前请求的 Request 对象
* @return 当前请求的Request对象 * @return 当前请求的Request对象
*/ */
public HttpServletRequest getRequest(); public HttpServletRequest getRequest();
/** /**
* 获取当前会话的 response * 获取当前请求的 Response 对象
* @return 当前请求的response * @return 当前请求的response对象
*/ */
public HttpServletResponse getResponse(); public HttpServletResponse getResponse();

View File

@@ -4,7 +4,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
/** /**
* sa-token 对Servlet的相关操作 接口默认实现类 * sa-token 对SaTokenServlet接口默认实现类
* @author kong * @author kong
* *
*/ */

View File

@@ -21,10 +21,12 @@ public class SaSession implements Serializable {
* 会话id * 会话id
*/ */
private String id; private String id;
/** /**
* 当前会话创建时间 * 当前会话创建时间
*/ */
private long createTime; private long createTime;
/** /**
* 当前会话键值对 * 当前会话键值对
*/ */
@@ -32,8 +34,8 @@ public class SaSession implements Serializable {
/** /**
* 构建一个 session对象 * 构建一个 session对象
* @param id sessionId * @param id session的id
*/ */
public SaSession(String id) { public SaSession(String id) {
this.id = id; this.id = id;
@@ -50,7 +52,7 @@ public class SaSession implements Serializable {
} }
/** /**
* 返回当前会话创建时间 * 返回当前会话创建时间
* @return 时间戳 * @return 时间戳
*/ */
public long getCreateTime() { public long getCreateTime() {
@@ -58,7 +60,7 @@ public class SaSession implements Serializable {
} }
/** /**
* 写入一个值 * 写入一个值
* @param key 名称 * @param key 名称
* @param value 值 * @param value 值
*/ */

View File

@@ -12,13 +12,16 @@ public class SaSessionCustomUtil {
/** /**
* 添加上指定前缀防止恶意伪造session * 添加上指定前缀防止恶意伪造session
*/ */
public static String session_key = "custom"; public static String sessionKey = "custom";
/** 组织一下key */
public static String getSessionKey(String sessionId) { 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 * @param sessionId session的id
* @return 是否存在 * @return 是否存在
*/ */
@@ -27,7 +30,7 @@ public class SaSessionCustomUtil {
} }
/** /**
* 获取指定key的session * 获取指定key的session
* @param sessionId key * @param sessionId key
* @param isCreate 如果没有,是否新建并返回 * @param isCreate 如果没有,是否新建并返回
* @return SaSession * @return SaSession
@@ -51,7 +54,7 @@ public class SaSessionCustomUtil {
} }
/** /**
* 删除指定key的session * 删除指定key的session
* @param sessionId 删除指定key * @param sessionId 删除指定key
*/ */
public static void deleteSessionById(String sessionId) { public static void deleteSessionById(String sessionId) {

View File

@@ -9,10 +9,10 @@ import java.util.List;
public interface StpInterface { public interface StpInterface {
/** /**
* 返回指定login_id所拥有的权限码集合 * 返回指定loginId所拥有的权限码集合
* @param loginId 账号id * @param loginId 账号id
* @param loginKey 具体的stp标识 * @param loginKey 具体的stp标识
* @return . * @return 该账号id具有的权限码集合
*/ */
public List<Object> getPermissionCodeList(Object loginId, String loginKey); public List<Object> getPermissionCodeList(Object loginId, String loginKey);

View File

@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 权限验证接口 默认实现 * 对StpInterface接口默认实现
* @author kong * @author kong
*/ */
public class StpInterfaceDefaultImpl implements StpInterface { public class StpInterfaceDefaultImpl implements StpInterface {

View File

@@ -14,7 +14,7 @@ import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.util.SaTokenInsideUtil; import cn.dev33.satoken.util.SaTokenInsideUtil;
/** /**
* sa-token 权限验证,逻辑 实现类 * sa-token 权限验证,逻辑实现类
* <p> * <p>
* (stp = sa-token-permission 的缩写 ) * (stp = sa-token-permission 的缩写 )
* @author kong * @author kong
@@ -91,8 +91,8 @@ public class StpLogic {
/** /**
* 获取指定loginId的tokenValue * 获取指定loginId的tokenValue
* @param loginId . * @param loginId 账号id
* @return . * @return token值
*/ */
public String getTokenValueByLoginId(Object loginId) { public String getTokenValueByLoginId(Object loginId) {
return SaTokenManager.getSaTokenDao().getValue(getKeyLoginId(loginId)); return SaTokenManager.getSaTokenDao().getValue(getKeyLoginId(loginId));
@@ -128,7 +128,7 @@ public class StpLogic {
/** /**
* 在当前会话上登录id * 在当前会话上登录id
* @param loginId 登录id 建议的类型long | int | String * @param loginId 登录id建议的类型long | int | String
*/ */
public void setLoginId(Object loginId) { public void setLoginId(Object loginId) {
@@ -228,7 +228,7 @@ public class StpLogic {
// 查询相关 // 查询相关
/** /**
* 获取当前会话是否已经登录 * 获取当前会话是否已经登录
* @return 是否已登录 * @return 是否已登录
*/ */
public boolean isLogin() { public boolean isLogin() {
@@ -237,15 +237,15 @@ public class StpLogic {
} }
/** /**
* 检验当前会话是否已经登录,如未登录,则抛出异常 * 检验当前会话是否已经登录,如未登录,则抛出异常
*/ */
public void checkLogin() { public void checkLogin() {
getLoginId(); getLoginId();
} }
/** /**
* 获取当前会话登录id, 如果未登录,则抛出异常 * 获取当前会话账号id, 如果未登录,则抛出异常
* @return . * @return 账号id
*/ */
public Object getLoginId() { public Object getLoginId() {
// 如果获取不到token则抛出无token // 如果获取不到token则抛出无token
@@ -278,7 +278,7 @@ public class StpLogic {
} }
/** /**
* 获取当前会话登录id, 如果未登录,则返回默认值 * 获取当前会话登录id, 如果未登录,则返回默认值
* @param <T> 返回类型 * @param <T> 返回类型
* @param defaultValue 默认值 * @param defaultValue 默认值
* @return 登录id * @return 登录id
@@ -304,8 +304,8 @@ public class StpLogic {
} }
/** /**
* 获取当前会话登录id, 如果未登录则返回null * 获取当前会话登录id, 如果未登录则返回null
* @return . * @return 账号id
*/ */
public Object getLoginIdDefaultNull() { public Object getLoginIdDefaultNull() {
// 如果连token都是空的则直接返回 // 如果连token都是空的则直接返回
@@ -328,7 +328,7 @@ public class StpLogic {
/** /**
* 获取当前会话登录id, 并转换为String * 获取当前会话登录id, 并转换为String
* @return 登录id * @return 账号id
*/ */
public String getLoginIdAsString() { public String getLoginIdAsString() {
return String.valueOf(getLoginId()); return String.valueOf(getLoginId());
@@ -336,7 +336,7 @@ public class StpLogic {
/** /**
* 获取当前会话登录id, 并转换为int * 获取当前会话登录id, 并转换为int
* @return 登录id * @return 账号id
*/ */
public int getLoginIdAsInt() { public int getLoginIdAsInt() {
// Object loginId = getLoginId(); // Object loginId = getLoginId();
@@ -348,7 +348,7 @@ public class StpLogic {
/** /**
* 获取当前会话登录id, 并转换为long * 获取当前会话登录id, 并转换为long
* @return 登录id * @return 账号id
*/ */
public long getLoginIdAsLong() { public long getLoginIdAsLong() {
// Object loginId = getLoginId(); // Object loginId = getLoginId();
@@ -378,9 +378,9 @@ public class StpLogic {
/** /**
* 获取指定key的session, 如果session尚未创建isCreate=是否新建并返回 * 获取指定key的session, 如果session尚未创建isCreate=是否新建并返回
* @param sessionId . * @param sessionId sessionId
* @param isCreate . * @param isCreate 是否新建
* @return . * @return session对象
*/ */
protected SaSession getSessionBySessionId(String sessionId, boolean isCreate) { protected SaSession getSessionBySessionId(String sessionId, boolean isCreate) {
SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId); SaSession session = SaTokenManager.getSaTokenDao().getSession(sessionId);
@@ -392,8 +392,8 @@ public class StpLogic {
} }
/** /**
* 获取指定loginId的session, 如果没有isCreate=是否新建并返回 * 获取指定loginId的session, 如果session尚未创建isCreate=是否新建并返回
* @param loginId 登录id * @param loginId 账号id
* @param isCreate 是否新建 * @param isCreate 是否新建
* @return SaSession * @return SaSession
*/ */
@@ -402,9 +402,9 @@ public class StpLogic {
} }
/** /**
* 获取指定loginId的session * 获取指定loginId的session如果session尚未创建则新建并返回
* @param loginId . * @param loginId 账号id
* @return . * @return session会话
*/ */
public SaSession getSessionByLoginId(Object loginId) { public SaSession getSessionByLoginId(Object loginId) {
return getSessionByLoginId(loginId, true); return getSessionByLoginId(loginId, true);
@@ -412,7 +412,7 @@ public class StpLogic {
/** /**
* 获取当前会话的session, 如果session尚未创建isCreate=是否新建并返回 * 获取当前会话的session, 如果session尚未创建isCreate=是否新建并返回
* @param isCreate 是否新建 * @param isCreate 是否新建
* @return 当前会话的session * @return 当前会话的session
*/ */
public SaSession getSession(boolean isCreate) { public SaSession getSession(boolean isCreate) {
@@ -420,7 +420,7 @@ public class StpLogic {
} }
/** /**
* 获取当前会话的session * 获取当前会话的session如果session尚未创建则新建并返回
* @return 当前会话的session * @return 当前会话的session
*/ */
public SaSession getSession() { public SaSession getSession() {
@@ -600,43 +600,43 @@ public class StpLogic {
// =================== 权限验证操作 =================== // =================== 权限验证操作 ===================
/** /**
* 指定loginId是否含有指定权限 * 指定账号id是否含有指定权限
* @param loginId . * @param loginId 账号id
* @param pcode . * @param permissionCode 权限码
* @return . * @return 是否含有指定权限
*/ */
public boolean hasPermission(Object loginId, Object pcode) { public boolean hasPermission(Object loginId, Object permissionCode) {
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey); List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
return !(pcodeList == null || pcodeList.contains(pcode) == false); return !(pcodeList == null || pcodeList.contains(permissionCode) == false);
} }
/** /**
* 当前会话是否含有指定权限 * 当前账号id是否含有指定权限
* @param pcode . * @param permissionCode 权限码
* @return . * @return 是否含有指定权限
*/ */
public boolean hasPermission(Object pcode) { public boolean hasPermission(Object permissionCode) {
return hasPermission(getLoginId(), pcode); return hasPermission(getLoginId(), permissionCode);
} }
/** /**
* 当前账号是否含有指定权限 没有就抛出异常 * 当前账号是否含有指定权限, 没有就抛出异常
* @param pcode . * @param permissionCode 权限码
*/ */
public void checkPermission(Object pcode) { public void checkPermission(Object permissionCode) {
if(hasPermission(pcode) == false) { if(hasPermission(permissionCode) == false) {
throw new NotPermissionException(pcode, this.loginKey); throw new NotPermissionException(permissionCode, this.loginKey);
} }
} }
/** /**
* 当前账号是否含有指定权限 指定多个,必须全都有 * 当前账号是否含有指定权限, [指定多个,必须全都有]
* @param pcodeArray . * @param permissionCodeArray 权限码数组
*/ */
public void checkPermissionAnd(Object... pcodeArray){ public void checkPermissionAnd(Object... permissionCodeArray){
Object loginId = getLoginId(); Object loginId = getLoginId();
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey); List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
for (Object pcode : pcodeArray) { for (Object pcode : permissionCodeArray) {
if(pcodeList.contains(pcode) == false) { if(pcodeList.contains(pcode) == false) {
throw new NotPermissionException(pcode, this.loginKey); // 没有权限抛出异常 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(); Object loginId = getLoginId();
List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey); List<Object> pcodeList = SaTokenManager.getStpInterface().getPermissionCodeList(loginId, loginKey);
for (Object pcode : pcodeArray) { for (Object pcode : permissionCodeArray) {
if(pcodeList.contains(pcode) == true) { if(pcodeList.contains(pcode) == true) {
return; // 有的话提前退出 return; // 有的话提前退出
} }
} }
if(pcodeArray.length > 0) { if(permissionCodeArray.length > 0) {
throw new NotPermissionException(pcodeArray[0], this.loginKey); // 没有权限抛出异常 throw new NotPermissionException(permissionCodeArray[0], this.loginKey); // 没有权限抛出异常
} }
} }
@@ -672,7 +672,7 @@ public class StpLogic {
} }
/** /**
* 获取key tokenValue 持久化 * 获取key tokenValue 持久化
* @param tokenValue . * @param tokenValue token值
* @return key * @return key
*/ */
public String getKeyTokenValue(String tokenValue) { public String getKeyTokenValue(String tokenValue) {
@@ -680,7 +680,7 @@ public class StpLogic {
} }
/** /**
* 获取key id 持久化 * 获取key id 持久化
* @param loginId . * @param loginId 账号id
* @return key * @return key
*/ */
public String getKeyLoginId(Object loginId) { public String getKeyLoginId(Object loginId) {
@@ -688,7 +688,7 @@ public class StpLogic {
} }
/** /**
* 获取key session 持久化 * 获取key session 持久化
* @param loginId . * @param loginId 账号id
* @return key * @return key
*/ */
public String getKeySession(Object loginId) { public String getKeySession(Object loginId) {
@@ -696,7 +696,7 @@ public class StpLogic {
} }
/** /**
* 获取key 指定token的最后操作时间 持久化 * 获取key 指定token的最后操作时间 持久化
* @param tokenValue token * @param tokenValue token
* @return key * @return key
*/ */
public String getKeyLastActivityTime(String tokenValue) { public String getKeyLastActivityTime(String tokenValue) {

View File

@@ -33,22 +33,22 @@ public class StpUtil {
} }
/** /**
* 获取指定loginId的tokenValue * 获取指定loginId的tokenValue
* @param loginId . * @param loginId 账号id
* @return . * @return token值
*/ */
public static String getTokenValueByLoginId(Object loginId) { public static String getTokenValueByLoginId(Object loginId) {
return stpLogic.getTokenValueByLoginId(loginId); return stpLogic.getTokenValueByLoginId(loginId);
} }
/** /**
* 获取当前StpLogin的loginKey * 获取当前StpLogin的loginKey
* @return 当前StpLogin的loginKey * @return 当前StpLogin的loginKey
*/ */
public static String getLoginKey(){ public static String getLoginKey(){
return stpLogic.getLoginKey(); return stpLogic.getLoginKey();
} }
/** /**
* 获取当前会话的token信息 * 获取当前会话的token信息
* @return token信息 * @return token信息
@@ -57,11 +57,12 @@ public class StpUtil {
return stpLogic.getTokenInfo(); return stpLogic.getTokenInfo();
} }
// =================== 登录相关操作 =================== // =================== 登录相关操作 ===================
/** /**
* 在当前会话上登录id * 在当前会话上登录id
* @param loginId 登录id 建议的类型long | int | String * @param loginId 登录id建议的类型long | int | String
*/ */
public static void setLoginId(Object loginId) { public static void setLoginId(Object loginId) {
stpLogic.setLoginId(loginId); stpLogic.setLoginId(loginId);
@@ -92,31 +93,31 @@ public class StpUtil {
// 查询相关 // 查询相关
/** /**
* 获取当前会话是否已经登录 * 获取当前会话是否已经登录
* @return 是否已登录 * @return 是否已登录
*/ */
public static boolean isLogin() { public static boolean isLogin() {
return stpLogic.isLogin(); return stpLogic.isLogin();
} }
/** /**
* 检验当前会话是否已经登录,如未登录,则抛出异常 * 检验当前会话是否已经登录,如未登录,则抛出异常
*/ */
public static void checkLogin() { public static void checkLogin() {
getLoginId(); stpLogic.checkLogin();
} }
/** /**
* 获取当前会话登录id, 如果未登录,则抛出异常 * 获取当前会话账号id, 如果未登录,则抛出异常
* @return . * @return 账号id
*/ */
public static Object getLoginId() { public static Object getLoginId() {
return stpLogic.getLoginId(); return stpLogic.getLoginId();
} }
/** /**
* 获取当前会话登录id, 如果未登录,则返回默认值 * 获取当前会话登录id, 如果未登录,则返回默认值
* @param <T> 返回类型 * @param <T> 返回类型
* @param defaultValue 默认值 * @param defaultValue 默认值
* @return 登录id * @return 登录id
@@ -124,10 +125,10 @@ public class StpUtil {
public static <T> T getLoginId(T defaultValue) { public static <T> T getLoginId(T defaultValue) {
return stpLogic.getLoginId(defaultValue); return stpLogic.getLoginId(defaultValue);
} }
/** /**
* 获取当前会话登录id, 如果未登录则返回null * 获取当前会话登录id, 如果未登录则返回null
* @return . * @return 账号id
*/ */
public static Object getLoginIdDefaultNull() { public static Object getLoginIdDefaultNull() {
return stpLogic.getLoginIdDefaultNull(); return stpLogic.getLoginIdDefaultNull();
@@ -135,7 +136,7 @@ public class StpUtil {
/** /**
* 获取当前会话登录id, 并转换为String * 获取当前会话登录id, 并转换为String
* @return 登录id * @return 账号id
*/ */
public static String getLoginIdAsString() { public static String getLoginIdAsString() {
return stpLogic.getLoginIdAsString(); return stpLogic.getLoginIdAsString();
@@ -143,7 +144,7 @@ public class StpUtil {
/** /**
* 获取当前会话登录id, 并转换为int * 获取当前会话登录id, 并转换为int
* @return 登录id * @return 账号id
*/ */
public static int getLoginIdAsInt() { public static int getLoginIdAsInt() {
return stpLogic.getLoginIdAsInt(); return stpLogic.getLoginIdAsInt();
@@ -151,7 +152,7 @@ public class StpUtil {
/** /**
* 获取当前会话登录id, 并转换为long * 获取当前会话登录id, 并转换为long
* @return 登录id * @return 账号id
*/ */
public static long getLoginIdAsLong() { public static long getLoginIdAsLong() {
return stpLogic.getLoginIdAsLong(); return stpLogic.getLoginIdAsLong();
@@ -170,8 +171,8 @@ public class StpUtil {
// =================== session相关 =================== // =================== session相关 ===================
/** /**
* 获取指定loginId的session, 如果没有isCreate=是否新建并返回 * 获取指定loginId的session, 如果session尚未创建isCreate=是否新建并返回
* @param loginId 登录id * @param loginId 账号id
* @param isCreate 是否新建 * @param isCreate 是否新建
* @return SaSession * @return SaSession
*/ */
@@ -180,26 +181,27 @@ public class StpUtil {
} }
/** /**
* 获取指定loginId的session * 获取指定loginId的session, 如果session尚未创建isCreate=是否新建并返回
* @param loginId . * @param loginId 账号id
* @return . * @param isCreate 是否新建
* @return SaSession
*/ */
public static SaSession getSessionByLoginId(Object loginId) { public static SaSession getSessionByLoginId(Object loginId) {
return stpLogic.getSessionByLoginId(loginId); return stpLogic.getSessionByLoginId(loginId);
} }
/** /**
* 获取当前会话的session, 如果没有isCreate=是否新建并返回 * 获取当前会话的session, 如果session尚未创建isCreate=是否新建并返回
* @param isCreate 是否新建 * @param isCreate 是否新建
* @return 当前会话的session * @return 当前会话的session
*/ */
public static SaSession getSession(boolean isCreate) { public static SaSession getSession(boolean isCreate) {
return stpLogic.getSession(isCreate); return stpLogic.getSession(isCreate);
} }
/** /**
* 获取当前会话的session * 获取当前会话的session如果session尚未创建则新建并返回
* @return . * @return 当前会话的session
*/ */
public static SaSession getSession() { public static SaSession getSession() {
return stpLogic.getSession(); return stpLogic.getSession();
@@ -282,47 +284,47 @@ public class StpUtil {
// =================== 权限验证操作 =================== // =================== 权限验证操作 ===================
/** /**
* 指定loginId是否含有指定权限 * 指定账号id是否含有指定权限
* @param loginId . * @param loginId 账号id
* @param pcode . * @param permissionCode 权限码
* @return . * @return 是否含有指定权限
*/ */
public static boolean hasPermission(Object loginId, Object pcode) { public static boolean hasPermission(Object loginId, Object pcode) {
return stpLogic.hasPermission(loginId, pcode); return stpLogic.hasPermission(loginId, pcode);
} }
/** /**
* 当前会话是否含有指定权限 * 当前账号id是否含有指定权限
* @param pcode . * @param permissionCode 权限码
* @return . * @return 是否含有指定权限
*/ */
public static boolean hasPermission(Object pcode) { public static boolean hasPermission(Object permissionCode) {
return stpLogic.hasPermission(pcode); return stpLogic.hasPermission(permissionCode);
} }
/** /**
* 当前账号是否含有指定权限 没有就抛出异常 * 当前账号是否含有指定权限, 没有就抛出异常
* @param pcode . * @param permissionCode 权限码
*/ */
public static void checkPermission(Object pcode) { public static void checkPermission(Object permissionCode) {
stpLogic.checkPermission(pcode); stpLogic.checkPermission(permissionCode);
} }
/** /**
* 当前账号是否含有指定权限 指定多个,必须全都有 * 当前账号是否含有指定权限, [指定多个,必须全都有]
* @param pcodeArray . * @param permissionCodeArray 权限码数组
*/ */
public static void checkPermissionAnd(Object... pcodeArray) { public static void checkPermissionAnd(Object... permissionCodeArray) {
stpLogic.checkPermissionAnd(pcodeArray); stpLogic.checkPermissionAnd(permissionCodeArray);
} }
/** /**
* 当前账号是否含有指定权限 指定多个,有一个就可以了】 * 当前账号是否含有指定权限, [指定多个,有一个就可以通过]
* @param pcodeArray . * @param permissionCodeArray 权限码数组
*/ */
public static void checkPermissionOr(Object... pcodeArray) { public static void checkPermissionOr(Object... permissionCodeArray) {
stpLogic.checkPermissionOr(pcodeArray); stpLogic.checkPermissionOr(permissionCodeArray);
} }

View File

@@ -21,7 +21,7 @@ public class SaTokenInsideUtil {
public static final String GITHUB_URL = "https://github.com/click33/sa-token"; public static final String GITHUB_URL = "https://github.com/click33/sa-token";
/** /**
* 打印 sa-token * 打印 sa-token 版本字符画
*/ */
public static void printSaToken() { public static void printSaToken() {
String str = String str =
@@ -44,7 +44,7 @@ public class SaTokenInsideUtil {
public static final String TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY = "TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY_"; public static final String TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY = "TOKEN_ACTIVITY_TIMEOUT_CHECKED_KEY_";
/** /**
* 生成指定长度的随机字符串 * 生成指定长度的随机字符串
* @param length 字符串的长度 * @param length 字符串的长度
* @return 一个随机字符串 * @return 一个随机字符串
*/ */

View File

@@ -9,7 +9,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
/** /**
* 将此注解加到springboot启动类上即可完成sa-token与springboot的集成 * 将此注解加到springboot启动类上即可完成sa-token与springboot的集成
* <p>注: v1.7版本以上已不再需要此注解直接引入sa-token-spring-boot-starter依赖即可
* @author kong * @author kong
* *
*/ */

View File

@@ -39,8 +39,6 @@ public class SaCheckInterceptor implements HandlerInterceptor {
} }
/** /**
* 每次请求之前触发 * 每次请求之前触发
*/ */
@@ -79,10 +77,6 @@ public class SaCheckInterceptor implements HandlerInterceptor {
return true; return true;
} }
/** /**
* 合并三个数组 * 合并三个数组
* @param a . * @param a .

View File

@@ -20,7 +20,6 @@ public class SaTokenServletSpringImpl implements SaTokenServlet {
return SpringMVCUtil.getRequest(); return SpringMVCUtil.getRequest();
} }
/** /**
* 获取当前请求的Response对象 * 获取当前请求的Response对象
*/ */

View File

@@ -15,7 +15,7 @@ public class SpringMVCUtil {
/** /**
* 获取当前会话的 request * 获取当前会话的 request
* @return . * @return request
*/ */
public static HttpServletRequest getRequest() { public static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装 ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
@@ -26,8 +26,8 @@ public class SpringMVCUtil {
} }
/** /**
* 获取当前会话的 response * 获取当前会话的 response
* @return . * @return response
*/ */
public static HttpServletResponse getResponse() { public static HttpServletResponse getResponse() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装 ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
@@ -37,7 +37,4 @@ public class SpringMVCUtil {
return servletRequestAttributes.getResponse(); return servletRequestAttributes.getResponse();
} }
} }