完善注释

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>
<module>sp-token-core</module>
<module>sa-token-core</module>
<module>sa-token-spring-boot-starter</module>
</modules>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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

View File

@ -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){

View File

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

View File

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

View File

@ -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) {

View File

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

View File

@ -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的剩余存活时间 (单位)
*/

View File

@ -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 构建完毕的异常对象
*/

View File

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

View File

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

View File

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

View File

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

View File

@ -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
*/

View File

@ -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) {

View File

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

View File

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

View File

@ -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) {

View File

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

View File

@ -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 一个随机字符串
*/

View File

@ -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
*
*/

View File

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

View File

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

View File

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