mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-06-28 13:34:18 +08:00
更新jar包引用方式
This commit is contained in:
parent
618d085b9a
commit
76031a77a0
Binary file not shown.
@ -25,14 +25,12 @@
|
|||||||
<artifactId>spring-boot-starter-aop</artifactId>
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- sa-token 安全认证 -->
|
<!-- sa-token权限验证 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.dev33.sa-token</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
<artifactId>sa-token-spring</artifactId>
|
<artifactId>sa-token</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
<scope>system</scope>
|
</dependency>
|
||||||
<systemPath>${project.basedir}/lib/sa-token-spring-1.0.0.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- SpringBoot整合redis -->
|
<!-- SpringBoot整合redis -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -57,10 +55,6 @@
|
|||||||
<classpathPrefix>lib/</classpathPrefix>
|
<classpathPrefix>lib/</classpathPrefix>
|
||||||
<mainClass>com.pj.SaTokenDemoApplication</mainClass>
|
<mainClass>com.pj.SaTokenDemoApplication</mainClass>
|
||||||
</manifest>
|
</manifest>
|
||||||
<!-- jar清单添加此字符串 -->
|
|
||||||
<manifestEntries>
|
|
||||||
<Class-Path>lib/sa-token-spring-1.0.0.jar</Class-Path>
|
|
||||||
</manifestEntries>
|
|
||||||
</archive>
|
</archive>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
@ -12,46 +12,97 @@ public class SaTokenConfig {
|
|||||||
private Boolean isReadBody = true; // 是否在header读取不到token时,继续从请求题参数里继续尝试读取
|
private Boolean isReadBody = true; // 是否在header读取不到token时,继续从请求题参数里继续尝试读取
|
||||||
|
|
||||||
private Boolean isV = true; // 是否在初始化配置时打印版本字符画
|
private Boolean isV = true; // 是否在初始化配置时打印版本字符画
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return tokenName
|
||||||
|
*/
|
||||||
public String getTokenName() {
|
public String getTokenName() {
|
||||||
return tokenName;
|
return tokenName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tokenName 要设置的 tokenName
|
||||||
|
*/
|
||||||
public void setTokenName(String tokenName) {
|
public void setTokenName(String tokenName) {
|
||||||
this.tokenName = tokenName;
|
this.tokenName = tokenName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return timeout
|
||||||
|
*/
|
||||||
public long getTimeout() {
|
public long getTimeout() {
|
||||||
return timeout;
|
return timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param timeout 要设置的 timeout
|
||||||
|
*/
|
||||||
public void setTimeout(long timeout) {
|
public void setTimeout(long timeout) {
|
||||||
this.timeout = timeout;
|
this.timeout = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return isShare
|
||||||
|
*/
|
||||||
public Boolean getIsShare() {
|
public Boolean getIsShare() {
|
||||||
return isShare;
|
return isShare;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isShare 要设置的 isShare
|
||||||
|
*/
|
||||||
public void setIsShare(Boolean isShare) {
|
public void setIsShare(Boolean isShare) {
|
||||||
this.isShare = isShare;
|
this.isShare = isShare;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return isReadHead
|
||||||
|
*/
|
||||||
public Boolean getIsReadHead() {
|
public Boolean getIsReadHead() {
|
||||||
return isReadHead;
|
return isReadHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isReadHead 要设置的 isReadHead
|
||||||
|
*/
|
||||||
public void setIsReadHead(Boolean isReadHead) {
|
public void setIsReadHead(Boolean isReadHead) {
|
||||||
this.isReadHead = isReadHead;
|
this.isReadHead = isReadHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return isReadBody
|
||||||
|
*/
|
||||||
public Boolean getIsReadBody() {
|
public Boolean getIsReadBody() {
|
||||||
return isReadBody;
|
return isReadBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isReadBody 要设置的 isReadBody
|
||||||
|
*/
|
||||||
public void setIsReadBody(Boolean isReadBody) {
|
public void setIsReadBody(Boolean isReadBody) {
|
||||||
this.isReadBody = isReadBody;
|
this.isReadBody = isReadBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return isV
|
||||||
|
*/
|
||||||
public Boolean getIsV() {
|
public Boolean getIsV() {
|
||||||
return isV;
|
return isV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param isV 要设置的 isV
|
||||||
|
*/
|
||||||
public void setIsV(Boolean isV) {
|
public void setIsV(Boolean isV) {
|
||||||
this.isV = isV;
|
this.isV = isV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (非 Javadoc)
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", isShare=" + isShare
|
return "SaTokenConfig [tokenName=" + tokenName + ", timeout=" + timeout + ", isShare=" + isShare
|
||||||
@ -62,4 +113,5 @@ public class SaTokenConfig {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public class SaTokenConfigFactory {
|
|||||||
private static Object initPropByMap(Map<String, String> map, Object obj){
|
private static Object initPropByMap(Map<String, String> map, Object obj){
|
||||||
|
|
||||||
if(map == null){
|
if(map == null){
|
||||||
map = new HashMap<>();
|
map = new HashMap<String, String>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1、取出类型
|
// 1、取出类型
|
||||||
@ -84,7 +84,9 @@ public class SaTokenConfigFactory {
|
|||||||
Object valueConvert = getObjectByClass(value, field.getType()); // 转换值类型
|
Object valueConvert = getObjectByClass(value, field.getType()); // 转换值类型
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
field.set(obj, valueConvert);
|
field.set(obj, valueConvert);
|
||||||
} catch (IllegalArgumentException | IllegalAccessException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
throw new RuntimeException("属性赋值出错:" + field.getName(), e);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
throw new RuntimeException("属性赋值出错:" + field.getName(), e);
|
throw new RuntimeException("属性赋值出错:" + field.getName(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,27 +33,27 @@ public interface SaTokenDao {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据指定key的session,如果没有,则返回空
|
* 根据指定key的session,如果没有,则返回空
|
||||||
* @param key 键名称
|
* @param sessionId 键名称
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public SaSession getSaSession(String sessionId);
|
public SaSession getSaSession(String sessionId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将指定session持久化
|
* 将指定session持久化
|
||||||
* @param key 键名称
|
* @param session 要保存的session对象
|
||||||
* @param value 值
|
|
||||||
* @param timeout 过期时间,单位: s
|
* @param timeout 过期时间,单位: s
|
||||||
*/
|
*/
|
||||||
public void saveSaSession(SaSession session, long timeout);
|
public void saveSaSession(SaSession session, long timeout);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新指定session
|
* 更新指定session
|
||||||
|
* @param session 要更新的session对象
|
||||||
*/
|
*/
|
||||||
public void updateSaSession(SaSession session);
|
public void updateSaSession(SaSession session);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除一个指定的session
|
* 删除一个指定的session
|
||||||
* @param key 键名称
|
* @param sessionId sessionId
|
||||||
*/
|
*/
|
||||||
public void delSaSession(String sessionId);
|
public void delSaSession(String sessionId);
|
||||||
|
|
||||||
|
@ -10,9 +10,7 @@ import cn.dev33.satoken.session.SaSession;
|
|||||||
*/
|
*/
|
||||||
public class SaTokenDaoDefault implements SaTokenDao {
|
public class SaTokenDaoDefault implements SaTokenDao {
|
||||||
|
|
||||||
/**
|
// 所有数据集合
|
||||||
* 所有数据集合
|
|
||||||
*/
|
|
||||||
Map<String, Object> dataMap = new HashMap<String, Object>();
|
Map<String, Object> dataMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,14 +41,17 @@ public class SaSession implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前会话创建时间
|
* 返回当前会话创建时间
|
||||||
|
* @return 时间戳
|
||||||
*/
|
*/
|
||||||
public long getCreateTime() {
|
public long getCreateTime() {
|
||||||
return createTime;
|
return createTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入值
|
* 写入一个值
|
||||||
|
* @param key 名称
|
||||||
|
* @param value 值
|
||||||
*/
|
*/
|
||||||
public void setAttribute(String key, Object value) {
|
public void setAttribute(String key, Object value) {
|
||||||
dataMap.put(key, value);
|
dataMap.put(key, value);
|
||||||
@ -56,14 +59,19 @@ public class SaSession implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取值
|
* 取出一个值
|
||||||
|
* @param key 名称
|
||||||
|
* @return 值
|
||||||
*/
|
*/
|
||||||
public Object getAttribute(String key) {
|
public Object getAttribute(String key) {
|
||||||
return dataMap.get(key);
|
return dataMap.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取值,并指定取不到值时的默认值
|
* 取值,并指定取不到值时的默认值
|
||||||
|
* @param key 名称
|
||||||
|
* @param default_value 取不到值的时候返回的默认值
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
public Object getAttribute(String key, Object default_value) {
|
public Object getAttribute(String key, Object default_value) {
|
||||||
Object value = getAttribute(key);
|
Object value = getAttribute(key);
|
||||||
@ -75,7 +83,8 @@ public class SaSession implements Serializable {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除一个key
|
* 移除一个值
|
||||||
|
* @param key 要移除的值的名字
|
||||||
*/
|
*/
|
||||||
public void removeAttribute(String key) {
|
public void removeAttribute(String key) {
|
||||||
dataMap.remove(key);
|
dataMap.remove(key);
|
||||||
@ -83,7 +92,7 @@ public class SaSession implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清空所有key
|
* 清空所有值
|
||||||
*/
|
*/
|
||||||
public void clearAttribute() {
|
public void clearAttribute() {
|
||||||
dataMap.clear();
|
dataMap.clear();
|
||||||
@ -91,14 +100,17 @@ public class SaSession implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否含有指定key
|
* 是否含有指定key
|
||||||
|
* @param key 是否含有指定值
|
||||||
|
* @return 是否含有
|
||||||
*/
|
*/
|
||||||
public boolean containsAttribute(String key) {
|
public boolean containsAttribute(String key) {
|
||||||
return dataMap.keySet().contains(key);
|
return dataMap.keySet().contains(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前session会话所有key
|
* 返回当前session会话所有key
|
||||||
|
* @return 所有值的key列表
|
||||||
*/
|
*/
|
||||||
public Set<String> getAttributeKeys() {
|
public Set<String> getAttributeKeys() {
|
||||||
return dataMap.keySet();
|
return dataMap.keySet();
|
||||||
@ -106,6 +118,7 @@ public class SaSession implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取数据集合(如果更新map里的值,请调用session.update()方法避免数据过时 )
|
* 获取数据集合(如果更新map里的值,请调用session.update()方法避免数据过时 )
|
||||||
|
* @return 返回底层储存值的map对象
|
||||||
*/
|
*/
|
||||||
public Map<String, Object> getDataMap() {
|
public Map<String, Object> getDataMap() {
|
||||||
return dataMap;
|
return dataMap;
|
||||||
|
@ -15,12 +15,21 @@ public class SaSessionCustomUtil {
|
|||||||
return SaTokenManager.getConfig().getTokenName() + ":" + session_key + ":session:" + sessionId;
|
return SaTokenManager.getConfig().getTokenName() + ":" + session_key + ":session:" + sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 指定key的session是否存在 */
|
/**
|
||||||
|
* 指定key的session是否存在
|
||||||
|
* @param sessionId session的id
|
||||||
|
* @return 是否存在
|
||||||
|
*/
|
||||||
public boolean isExists(String sessionId) {
|
public boolean isExists(String sessionId) {
|
||||||
return SaTokenManager.getDao().getSaSession(getSessionKey(sessionId)) != null;
|
return SaTokenManager.getDao().getSaSession(getSessionKey(sessionId)) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取指定key的session, 如果没有,is_create=是否新建并返回 */
|
/**
|
||||||
|
* 获取指定key的session
|
||||||
|
* @param sessionId key
|
||||||
|
* @param is_create 如果没有,是否新建并返回
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static SaSession getSessionById(String sessionId, boolean is_create) {
|
public static SaSession getSessionById(String sessionId, boolean is_create) {
|
||||||
SaSession session = SaTokenManager.getDao().getSaSession(getSessionKey(sessionId));
|
SaSession session = SaTokenManager.getDao().getSaSession(getSessionKey(sessionId));
|
||||||
if(session == null && is_create) {
|
if(session == null && is_create) {
|
||||||
@ -29,12 +38,19 @@ public class SaSessionCustomUtil {
|
|||||||
}
|
}
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
/** 获取指定key的session, 如果没有则新建并返回 */
|
/**
|
||||||
|
* 获取指定key的session, 如果没有则新建并返回
|
||||||
|
* @param sessionId key
|
||||||
|
* @return session对象
|
||||||
|
*/
|
||||||
public static SaSession getSessionById(String sessionId) {
|
public static SaSession getSessionById(String sessionId) {
|
||||||
return getSessionById(sessionId, true);
|
return getSessionById(sessionId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除指定key的session */
|
/**
|
||||||
|
* 删除指定key的session
|
||||||
|
* @param sessionId 删除指定key
|
||||||
|
*/
|
||||||
public static void delSessionById(String sessionId) {
|
public static void delSessionById(String sessionId) {
|
||||||
SaTokenManager.getDao().delSaSession(getSessionKey(sessionId));
|
SaTokenManager.getDao().delSaSession(getSessionKey(sessionId));
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,12 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface StpInterface {
|
public interface StpInterface {
|
||||||
|
|
||||||
/** 返回指定login_id所拥有的权限码集合 */
|
/**
|
||||||
|
* 返回指定login_id所拥有的权限码集合
|
||||||
|
* @param login_id 账号id
|
||||||
|
* @param login_key 具体的stp标识
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public List<Object> getPermissionCodeList(Object login_id, String login_key);
|
public List<Object> getPermissionCodeList(Object login_id, String login_key);
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,12 +36,18 @@ public class StpLogic {
|
|||||||
// =================== 获取token 相关 ===================
|
// =================== 获取token 相关 ===================
|
||||||
|
|
||||||
|
|
||||||
/** 随机生成一个tokenValue */
|
/**
|
||||||
|
* 随机生成一个tokenValue
|
||||||
|
* @return 生成的tokenValue
|
||||||
|
*/
|
||||||
public String randomTokenValue() {
|
public String randomTokenValue() {
|
||||||
return UUID.randomUUID().toString();
|
return UUID.randomUUID().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前tokenValue */
|
/**
|
||||||
|
* 获取当前tokenValue
|
||||||
|
* @return 当前tokenValue
|
||||||
|
*/
|
||||||
public String getTokenValue(){
|
public String getTokenValue(){
|
||||||
// 0、获取相应对象
|
// 0、获取相应对象
|
||||||
HttpServletRequest request = SpringMVCUtil.getRequest();
|
HttpServletRequest request = SpringMVCUtil.getRequest();
|
||||||
@ -82,12 +88,19 @@ public class StpLogic {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取指定id的tokenValue */
|
/**
|
||||||
|
* 获取指定id的tokenValue
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getTokenValueByLoginId(Object login_id) {
|
public String getTokenValueByLoginId(Object login_id) {
|
||||||
return SaTokenManager.getDao().getValue(getKey_LoginId(login_id));
|
return SaTokenManager.getDao().getValue(getKey_LoginId(login_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话的token信息:tokenName与tokenValue */
|
/**
|
||||||
|
* 获取当前会话的token信息:tokenName与tokenValue
|
||||||
|
* @return 一个Map对象
|
||||||
|
*/
|
||||||
public Map<String, String> getTokenInfo() {
|
public Map<String, String> getTokenInfo() {
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<String, String>();
|
||||||
map.put("tokenName", getKey_tokenName());
|
map.put("tokenName", getKey_tokenName());
|
||||||
@ -98,7 +111,10 @@ public class StpLogic {
|
|||||||
|
|
||||||
// =================== 登录相关操作 ===================
|
// =================== 登录相关操作 ===================
|
||||||
|
|
||||||
/** 在当前会话上登录id ,建议的类型:(long | int | String) */
|
/**
|
||||||
|
* 在当前会话上登录id
|
||||||
|
* @param login_id 登录id ,建议的类型:(long | int | String)
|
||||||
|
*/
|
||||||
public void setLoginId(Object login_id) {
|
public void setLoginId(Object login_id) {
|
||||||
|
|
||||||
// 1、获取相应对象
|
// 1、获取相应对象
|
||||||
@ -125,7 +141,9 @@ public class StpLogic {
|
|||||||
SaCookieUtil.addCookie(SpringMVCUtil.getResponse(), getKey_tokenName(), tokenValue, "/", (int)config.getTimeout()); // cookie注入
|
SaCookieUtil.addCookie(SpringMVCUtil.getResponse(), getKey_tokenName(), tokenValue, "/", (int)config.getTimeout()); // cookie注入
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前会话注销登录 */
|
/**
|
||||||
|
* 当前会话注销登录
|
||||||
|
*/
|
||||||
public void logout() {
|
public void logout() {
|
||||||
Object login_id = getLoginId_defaultNull();
|
Object login_id = getLoginId_defaultNull();
|
||||||
if(login_id != null) {
|
if(login_id != null) {
|
||||||
@ -134,7 +152,10 @@ public class StpLogic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 指定login_id的会话注销登录(踢人下线) */
|
/**
|
||||||
|
* 指定login_id的会话注销登录(踢人下线)
|
||||||
|
* @param login_id 账号id
|
||||||
|
*/
|
||||||
public void logoutByLoginId(Object login_id) {
|
public void logoutByLoginId(Object login_id) {
|
||||||
|
|
||||||
// 获取相应tokenValue
|
// 获取相应tokenValue
|
||||||
@ -152,12 +173,18 @@ public class StpLogic {
|
|||||||
|
|
||||||
// 查询相关
|
// 查询相关
|
||||||
|
|
||||||
/** 获取当前会话是否已经登录 */
|
/**
|
||||||
|
* 获取当前会话是否已经登录
|
||||||
|
* @return 是否已登录
|
||||||
|
*/
|
||||||
public boolean isLogin() {
|
public boolean isLogin() {
|
||||||
return getLoginId_defaultNull() != null;
|
return getLoginId_defaultNull() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则抛出异常 */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则抛出异常
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public Object getLoginId() {
|
public Object getLoginId() {
|
||||||
Object login_id = getLoginId_defaultNull();
|
Object login_id = getLoginId_defaultNull();
|
||||||
if(login_id == null) {
|
if(login_id == null) {
|
||||||
@ -166,7 +193,11 @@ public class StpLogic {
|
|||||||
return login_id;
|
return login_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则返回默认值 */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则返回默认值
|
||||||
|
* @param default_value
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public <T>T getLoginId(T default_value) {
|
public <T>T getLoginId(T default_value) {
|
||||||
Object login_id = getLoginId_defaultNull();
|
Object login_id = getLoginId_defaultNull();
|
||||||
@ -176,7 +207,10 @@ public class StpLogic {
|
|||||||
return (T)login_id;
|
return (T)login_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则返回null */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则返回null
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public Object getLoginId_defaultNull() {
|
public Object getLoginId_defaultNull() {
|
||||||
String tokenValue = getTokenValue();
|
String tokenValue = getTokenValue();
|
||||||
if(tokenValue != null) {
|
if(tokenValue != null) {
|
||||||
@ -188,12 +222,18 @@ public class StpLogic {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为String */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为String
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getLoginId_asString() {
|
public String getLoginId_asString() {
|
||||||
return String.valueOf(getLoginId());
|
return String.valueOf(getLoginId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为int */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为int
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public int getLoginId_asInt() {
|
public int getLoginId_asInt() {
|
||||||
// Object login_id = getLoginId();
|
// Object login_id = getLoginId();
|
||||||
// if(login_id instanceof Integer) {
|
// if(login_id instanceof Integer) {
|
||||||
@ -202,7 +242,10 @@ public class StpLogic {
|
|||||||
return Integer.valueOf(String.valueOf(getLoginId()));
|
return Integer.valueOf(String.valueOf(getLoginId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为long */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为long
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public long getLoginId_asLong() {
|
public long getLoginId_asLong() {
|
||||||
// Object login_id = getLoginId();
|
// Object login_id = getLoginId();
|
||||||
// if(login_id instanceof Long) {
|
// if(login_id instanceof Long) {
|
||||||
@ -215,7 +258,12 @@ public class StpLogic {
|
|||||||
|
|
||||||
// =================== session相关 ===================
|
// =================== session相关 ===================
|
||||||
|
|
||||||
/** 获取指定key的session, 如果没有,is_create=是否新建并返回 */
|
/**
|
||||||
|
* 获取指定key的session, 如果没有,is_create=是否新建并返回
|
||||||
|
* @param sessionId
|
||||||
|
* @param is_create
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
protected SaSession getSessionBySessionId(String sessionId, boolean is_create) {
|
protected SaSession getSessionBySessionId(String sessionId, boolean is_create) {
|
||||||
SaSession session = SaTokenManager.getDao().getSaSession(sessionId);
|
SaSession session = SaTokenManager.getDao().getSaSession(sessionId);
|
||||||
if(session == null && is_create) {
|
if(session == null && is_create) {
|
||||||
@ -225,12 +273,19 @@ public class StpLogic {
|
|||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取指定login_id的session */
|
/**
|
||||||
|
* 获取指定login_id的session
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public SaSession getSessionByLoginId(Object login_id) {
|
public SaSession getSessionByLoginId(Object login_id) {
|
||||||
return getSessionBySessionId(getKey_session(login_id), false);
|
return getSessionBySessionId(getKey_session(login_id), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话的session */
|
/**
|
||||||
|
* 获取当前会话的session
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public SaSession getSession() {
|
public SaSession getSession() {
|
||||||
return getSessionBySessionId(getKey_session(getLoginId()), true);
|
return getSessionBySessionId(getKey_session(getLoginId()), true);
|
||||||
}
|
}
|
||||||
@ -239,25 +294,40 @@ public class StpLogic {
|
|||||||
|
|
||||||
// =================== 权限验证操作 ===================
|
// =================== 权限验证操作 ===================
|
||||||
|
|
||||||
/** 指定login_id是否含有指定权限 */
|
/**
|
||||||
|
* 指定login_id是否含有指定权限
|
||||||
|
* @param login_id
|
||||||
|
* @param pcode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public boolean hasPermission(Object login_id, Object pcode) {
|
public boolean hasPermission(Object login_id, Object pcode) {
|
||||||
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
||||||
return !(pcodeList == null || pcodeList.contains(pcode) == false);
|
return !(pcodeList == null || pcodeList.contains(pcode) == false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前会话是否含有指定权限 */
|
/**
|
||||||
|
* 当前会话是否含有指定权限
|
||||||
|
* @param pcode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public boolean hasPermission(Object pcode) {
|
public boolean hasPermission(Object pcode) {
|
||||||
return hasPermission(getLoginId(), pcode);
|
return hasPermission(getLoginId(), pcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 没有就抛出异常 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 没有就抛出异常
|
||||||
|
* @param pcode
|
||||||
|
*/
|
||||||
public void checkPermission(Object pcode) {
|
public void checkPermission(Object pcode) {
|
||||||
if(hasPermission(pcode) == false) {
|
if(hasPermission(pcode) == false) {
|
||||||
throw new NotPermissionException(pcode);
|
throw new NotPermissionException(pcode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 【指定多个,必须全都有】 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 【指定多个,必须全都有】
|
||||||
|
* @param pcodeArray
|
||||||
|
*/
|
||||||
public void checkPermissionAnd(Object... pcodeArray){
|
public void checkPermissionAnd(Object... pcodeArray){
|
||||||
Object login_id = getLoginId();
|
Object login_id = getLoginId();
|
||||||
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
||||||
@ -268,7 +338,10 @@ public class StpLogic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】
|
||||||
|
* @param pcodeArray
|
||||||
|
*/
|
||||||
public void checkPermissionOr(Object... pcodeArray){
|
public void checkPermissionOr(Object... pcodeArray){
|
||||||
Object login_id = getLoginId();
|
Object login_id = getLoginId();
|
||||||
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
List<Object> pcodeList = SaTokenManager.getStp().getPermissionCodeList(login_id, login_key);
|
||||||
@ -285,19 +358,34 @@ public class StpLogic {
|
|||||||
|
|
||||||
// =================== 返回相应key ===================
|
// =================== 返回相应key ===================
|
||||||
|
|
||||||
/** 获取key:客户端 tokenName */
|
/**
|
||||||
|
* 获取key:客户端 tokenName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getKey_tokenName() {
|
public String getKey_tokenName() {
|
||||||
return SaTokenManager.getConfig().getTokenName();
|
return SaTokenManager.getConfig().getTokenName();
|
||||||
}
|
}
|
||||||
/** 获取key: tokenValue 持久化 */
|
/**
|
||||||
|
* 获取key: tokenValue 持久化
|
||||||
|
* @param tokenValue
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getKey_TokenValue(String tokenValue) {
|
public String getKey_TokenValue(String tokenValue) {
|
||||||
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":token:" + tokenValue;
|
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":token:" + tokenValue;
|
||||||
}
|
}
|
||||||
/** 获取key: id 持久化 */
|
/**
|
||||||
|
* 获取key: id 持久化
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getKey_LoginId(Object login_id) {
|
public String getKey_LoginId(Object login_id) {
|
||||||
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":id:" + login_id;
|
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":id:" + login_id;
|
||||||
}
|
}
|
||||||
/** 获取key: session 持久化 */
|
/**
|
||||||
|
* 获取key: session 持久化
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public String getKey_session(Object login_id) {
|
public String getKey_session(Object login_id) {
|
||||||
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":session:" + login_id;
|
return SaTokenManager.getConfig().getTokenName() + ":" + login_key + ":session:" + login_id;
|
||||||
}
|
}
|
||||||
|
@ -19,110 +19,175 @@ public class StpUtil {
|
|||||||
// =================== 获取token 相关 ===================
|
// =================== 获取token 相关 ===================
|
||||||
|
|
||||||
|
|
||||||
/** 获取当前tokenValue */
|
/**
|
||||||
|
* 获取当前tokenValue
|
||||||
|
* @return 当前tokenValue
|
||||||
|
*/
|
||||||
public static String getTokenValue() {
|
public static String getTokenValue() {
|
||||||
return stpLogic.getTokenValue();
|
return stpLogic.getTokenValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取指定id的tokenValue */
|
/**
|
||||||
|
* 获取指定id的tokenValue
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static String getTokenValueByLoginId(Object login_id) {
|
public static String getTokenValueByLoginId(Object login_id) {
|
||||||
return stpLogic.getTokenValueByLoginId(login_id);
|
return stpLogic.getTokenValueByLoginId(login_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话的token信息:tokenName与tokenValue */
|
/**
|
||||||
|
* 获取当前会话的token信息:tokenName与tokenValue
|
||||||
|
* @return 一个Map对象
|
||||||
|
*/
|
||||||
public static Map<String, String> getTokenInfo() {
|
public static Map<String, String> getTokenInfo() {
|
||||||
return stpLogic.getTokenInfo();
|
return stpLogic.getTokenInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =================== 登录相关操作 ===================
|
// =================== 登录相关操作 ===================
|
||||||
|
|
||||||
/** 在当前会话上设置登录id,建议的类型:(long | int | String) */
|
/**
|
||||||
|
* 在当前会话上登录id
|
||||||
|
* @param login_id 登录id ,建议的类型:(long | int | String)
|
||||||
|
*/
|
||||||
public static void setLoginId(Object login_id) {
|
public static void setLoginId(Object login_id) {
|
||||||
stpLogic.setLoginId(login_id);
|
stpLogic.setLoginId(login_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前会话注销登录 */
|
/**
|
||||||
|
* 当前会话注销登录
|
||||||
|
*/
|
||||||
public static void logout() {
|
public static void logout() {
|
||||||
stpLogic.logout();
|
stpLogic.logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 指定login_id的会话注销登录(踢人下线) */
|
/**
|
||||||
|
* 指定login_id的会话注销登录(踢人下线)
|
||||||
|
* @param login_id 账号id
|
||||||
|
*/
|
||||||
public static void logoutByLoginId(Object login_id) {
|
public static void logoutByLoginId(Object login_id) {
|
||||||
stpLogic.logoutByLoginId(login_id);
|
stpLogic.logoutByLoginId(login_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询相关
|
// 查询相关
|
||||||
|
|
||||||
/** 获取当前会话是否已经登录 */
|
/**
|
||||||
|
* 获取当前会话是否已经登录
|
||||||
|
* @return 是否已登录
|
||||||
|
*/
|
||||||
public static boolean isLogin() {
|
public static boolean isLogin() {
|
||||||
return stpLogic.isLogin();
|
return stpLogic.isLogin();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则抛出异常 */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则抛出异常
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static Object getLoginId() {
|
public static Object getLoginId() {
|
||||||
return stpLogic.getLoginId();
|
return stpLogic.getLoginId();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则返回默认值 */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则返回默认值
|
||||||
|
* @param default_value
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static <T> T getLoginId(T default_value) {
|
public static <T> T getLoginId(T default_value) {
|
||||||
return stpLogic.getLoginId(default_value);
|
return stpLogic.getLoginId(default_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 如果未登录,则返回null */
|
/**
|
||||||
|
* 获取当前会话登录id, 如果未登录,则返回null
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static Object getLoginId_defaultNull() {
|
public static Object getLoginId_defaultNull() {
|
||||||
return stpLogic.getLoginId_defaultNull();
|
return stpLogic.getLoginId_defaultNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为String */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为String
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static String getLoginId_asString() {
|
public static String getLoginId_asString() {
|
||||||
return stpLogic.getLoginId_asString();
|
return stpLogic.getLoginId_asString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为int */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为int
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static int getLoginId_asInt() {
|
public static int getLoginId_asInt() {
|
||||||
return stpLogic.getLoginId_asInt();
|
return stpLogic.getLoginId_asInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话登录id, 并转换为long */
|
/**
|
||||||
|
* 获取当前会话登录id, 并转换为long
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static long getLoginId_asLong() {
|
public static long getLoginId_asLong() {
|
||||||
return stpLogic.getLoginId_asLong();
|
return stpLogic.getLoginId_asLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =================== session相关 ===================
|
// =================== session相关 ===================
|
||||||
|
|
||||||
/** 获取指定login_id的session */
|
/**
|
||||||
|
* 获取指定login_id的session
|
||||||
|
* @param login_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static SaSession getSessionByLoginId(Object login_id) {
|
public static SaSession getSessionByLoginId(Object login_id) {
|
||||||
return stpLogic.getSessionByLoginId(login_id);
|
return stpLogic.getSessionByLoginId(login_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取当前会话的session */
|
/**
|
||||||
|
* 获取当前会话的session
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static SaSession getSession() {
|
public static SaSession getSession() {
|
||||||
return stpLogic.getSession();
|
return stpLogic.getSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =================== 权限验证操作 ===================
|
// =================== 权限验证操作 ===================
|
||||||
|
|
||||||
/** 指定login_id是否含有指定权限 */
|
/**
|
||||||
|
* 指定login_id是否含有指定权限
|
||||||
|
* @param login_id
|
||||||
|
* @param pcode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static boolean hasPermission(Object login_id, Object pcode) {
|
public static boolean hasPermission(Object login_id, Object pcode) {
|
||||||
return stpLogic.hasPermission(login_id, pcode);
|
return stpLogic.hasPermission(login_id, pcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前会话是否含有指定权限 */
|
/**
|
||||||
|
* 当前会话是否含有指定权限
|
||||||
|
* @param pcode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static boolean hasPermission(Object pcode) {
|
public static boolean hasPermission(Object pcode) {
|
||||||
return stpLogic.hasPermission(pcode);
|
return stpLogic.hasPermission(pcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 没有就抛出异常 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 没有就抛出异常
|
||||||
|
* @param pcode
|
||||||
|
*/
|
||||||
public static void checkPermission(Object pcode) {
|
public static void checkPermission(Object pcode) {
|
||||||
stpLogic.checkPermission(pcode);
|
stpLogic.checkPermission(pcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 【指定多个,必须全都有】 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 【指定多个,必须全都有】
|
||||||
|
* @param pcodeArray
|
||||||
|
*/
|
||||||
public static void checkPermissionAnd(Object... pcodeArray) {
|
public static void checkPermissionAnd(Object... pcodeArray) {
|
||||||
stpLogic.checkPermissionAnd(pcodeArray);
|
stpLogic.checkPermissionAnd(pcodeArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】 */
|
/**
|
||||||
|
* 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】
|
||||||
|
* @param pcodeArray
|
||||||
|
*/
|
||||||
public static void checkPermissionOr(Object... pcodeArray) {
|
public static void checkPermissionOr(Object... pcodeArray) {
|
||||||
stpLogic.checkPermissionOr(pcodeArray);
|
stpLogic.checkPermissionOr(pcodeArray);
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,9 @@ public class SaCookieUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取指定cookie
|
* 获取指定cookie
|
||||||
|
* @param request
|
||||||
|
* @param cookieName
|
||||||
|
* @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,6 +35,11 @@ public class SaCookieUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加cookie
|
* 添加cookie
|
||||||
|
* @param response
|
||||||
|
* @param name
|
||||||
|
* @param value
|
||||||
|
* @param path
|
||||||
|
* @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);
|
||||||
@ -46,6 +54,9 @@ public class SaCookieUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除cookie
|
* 删除cookie
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @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();
|
||||||
@ -62,6 +73,10 @@ public class SaCookieUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改cookie的value值
|
* 修改cookie的value值
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @param name
|
||||||
|
* @param value
|
||||||
*/
|
*/
|
||||||
public static void updateCookie(HttpServletRequest request,HttpServletResponse response,String name,String value) {
|
public static void updateCookie(HttpServletRequest request,HttpServletResponse response,String name,String value) {
|
||||||
Cookie[] cookies = request.getCookies();
|
Cookie[] cookies = request.getCookies();
|
||||||
|
@ -13,7 +13,10 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
|||||||
*/
|
*/
|
||||||
public class SpringMVCUtil {
|
public class SpringMVCUtil {
|
||||||
|
|
||||||
// 获取当前会话的 request
|
/**
|
||||||
|
* 获取当前会话的 request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static HttpServletRequest getRequest() {
|
public static HttpServletRequest getRequest() {
|
||||||
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
|
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
|
||||||
if(servletRequestAttributes == null) {
|
if(servletRequestAttributes == null) {
|
||||||
@ -22,7 +25,10 @@ public class SpringMVCUtil {
|
|||||||
return servletRequestAttributes.getRequest();
|
return servletRequestAttributes.getRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取当前会话的
|
/**
|
||||||
|
* 获取当前会话的 response
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static HttpServletResponse getResponse() {
|
public static HttpServletResponse getResponse() {
|
||||||
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
|
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();// 大善人SpringMVC提供的封装
|
||||||
if(servletRequestAttributes == null) {
|
if(servletRequestAttributes == null) {
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
你可以通过`github`或者`gitee`来获取源码
|
你可以通过`github`或者`gitee`来获取源码
|
||||||
- github地址:[https://github.com/click33/sa-token](https://github.com/click33/sa-token)
|
- github地址:[https://github.com/click33/sa-token](https://github.com/click33/sa-token)
|
||||||
@ -14,9 +13,20 @@
|
|||||||
- sa-token-doc: 文档介绍
|
- sa-token-doc: 文档介绍
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## jar包下载
|
## jar包下载
|
||||||
[点击下载](https://color-test.oss-cn-qingdao.aliyuncs.com/sa-token/sa-token-spring-1.0.0.jar)
|
[点击下载:sa-token-1.0.0.jar](https://color-test.oss-cn-qingdao.aliyuncs.com/sa-token/sa-token-1.0.0.jar)
|
||||||
|
|
||||||
|
|
||||||
|
## maven依赖
|
||||||
|
``` xml
|
||||||
|
<!-- sa-token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.dev33</groupId>
|
||||||
|
<artifactId>sa-token</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,18 +11,15 @@
|
|||||||
在IDE中新建一个Springboot项目,例如:`sa-token-demo-springboot`(不会的同学请自行百度或者参考github示例)
|
在IDE中新建一个Springboot项目,例如:`sa-token-demo-springboot`(不会的同学请自行百度或者参考github示例)
|
||||||
|
|
||||||
#### 2、设置jar包依赖
|
#### 2、设置jar包依赖
|
||||||
- 在项目根目录新建文件夹`lib`,将 `sa-token-spring-xxx.jar` 复制到其中
|
- 在 `pom.xml` 中添加依赖:
|
||||||
- 并在 `pom.xml` 中添加依赖:
|
|
||||||
|
|
||||||
``` xml
|
``` xml
|
||||||
<!-- sa-token 安全认证 -->
|
<!-- sa-token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.dev33.sa-token</groupId>
|
<groupId>cn.dev33</groupId>
|
||||||
<artifactId>sa-token-spring</artifactId>
|
<artifactId>sa-token</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
<scope>system</scope>
|
</dependency>
|
||||||
<systemPath>${project.basedir}/lib/sa-token-spring-1.0.0.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3、配置文件
|
#### 3、配置文件
|
||||||
|
Loading…
Reference in New Issue
Block a user