Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
shengzhang_
sa-token
提交
76031a77
sa-token
项目概览
shengzhang_
/
sa-token
通知
68
Star
16
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
sa-token
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
76031a77
编写于
2月 08, 2020
作者:
shengzhang_
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新jar包引用方式
上级
618d085b
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
359 addition
and
98 deletion
+359
-98
sa-token-demo-springboot/lib/sa-token-spring-1.0.0.jar
sa-token-demo-springboot/lib/sa-token-spring-1.0.0.jar
+0
-0
sa-token-demo-springboot/pom.xml
sa-token-demo-springboot/pom.xml
+6
-12
sa-token-dev/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
.../src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
+54
-2
sa-token-dev/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java
...in/java/cn/dev33/satoken/config/SaTokenConfigFactory.java
+4
-2
sa-token-dev/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java
...en-dev/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java
+5
-5
sa-token-dev/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefault.java
...src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefault.java
+1
-3
sa-token-dev/src/main/java/cn/dev33/satoken/session/SaSession.java
...dev/src/main/java/cn/dev33/satoken/session/SaSession.java
+21
-8
sa-token-dev/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java
...in/java/cn/dev33/satoken/session/SaSessionCustomUtil.java
+20
-4
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpInterface.java
...-dev/src/main/java/cn/dev33/satoken/stp/StpInterface.java
+6
-1
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpLogic.java
...oken-dev/src/main/java/cn/dev33/satoken/stp/StpLogic.java
+114
-26
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpUtil.java
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpUtil.java
+85
-20
sa-token-dev/src/main/java/cn/dev33/satoken/util/SaCookieUtil.java
...dev/src/main/java/cn/dev33/satoken/util/SaCookieUtil.java
+15
-0
sa-token-dev/src/main/java/cn/dev33/satoken/util/SpringMVCUtil.java
...ev/src/main/java/cn/dev33/satoken/util/SpringMVCUtil.java
+8
-2
sa-token-doc/doc/start/download.md
sa-token-doc/doc/start/download.md
+13
-3
sa-token-doc/doc/start/example.md
sa-token-doc/doc/start/example.md
+7
-10
未找到文件。
sa-token-demo-springboot/lib/sa-token-spring-1.0.0.jar
已删除
100644 → 0
浏览文件 @
618d085b
文件已删除
sa-token-demo-springboot/pom.xml
浏览文件 @
76031a77
...
...
@@ -25,14 +25,12 @@
<artifactId>
spring-boot-starter-aop
</artifactId>
</dependency>
<!-- sa-token 安全认证 -->
<dependency>
<groupId>
cn.dev33.sa-token
</groupId>
<artifactId>
sa-token-spring
</artifactId>
<version>
1.0.0
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/lib/sa-token-spring-1.0.0.jar
</systemPath>
</dependency>
<!-- sa-token权限验证 -->
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token
</artifactId>
<version>
1.0.0
</version>
</dependency>
<!-- SpringBoot整合redis -->
<dependency>
...
...
@@ -57,10 +55,6 @@
<classpathPrefix>
lib/
</classpathPrefix>
<mainClass>
com.pj.SaTokenDemoApplication
</mainClass>
</manifest>
<!-- jar清单添加此字符串 -->
<manifestEntries>
<Class-Path>
lib/sa-token-spring-1.0.0.jar
</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
浏览文件 @
76031a77
...
...
@@ -12,46 +12,97 @@ public class SaTokenConfig {
private
Boolean
isReadBody
=
true
;
// 是否在header读取不到token时,继续从请求题参数里继续尝试读取
private
Boolean
isV
=
true
;
// 是否在初始化配置时打印版本字符画
/**
* @return tokenName
*/
public
String
getTokenName
()
{
return
tokenName
;
}
/**
* @param tokenName 要设置的 tokenName
*/
public
void
setTokenName
(
String
tokenName
)
{
this
.
tokenName
=
tokenName
;
}
/**
* @return timeout
*/
public
long
getTimeout
()
{
return
timeout
;
}
/**
* @param timeout 要设置的 timeout
*/
public
void
setTimeout
(
long
timeout
)
{
this
.
timeout
=
timeout
;
}
/**
* @return isShare
*/
public
Boolean
getIsShare
()
{
return
isShare
;
}
/**
* @param isShare 要设置的 isShare
*/
public
void
setIsShare
(
Boolean
isShare
)
{
this
.
isShare
=
isShare
;
}
/**
* @return isReadHead
*/
public
Boolean
getIsReadHead
()
{
return
isReadHead
;
}
/**
* @param isReadHead 要设置的 isReadHead
*/
public
void
setIsReadHead
(
Boolean
isReadHead
)
{
this
.
isReadHead
=
isReadHead
;
}
/**
* @return isReadBody
*/
public
Boolean
getIsReadBody
()
{
return
isReadBody
;
}
/**
* @param isReadBody 要设置的 isReadBody
*/
public
void
setIsReadBody
(
Boolean
isReadBody
)
{
this
.
isReadBody
=
isReadBody
;
}
/**
* @return isV
*/
public
Boolean
getIsV
()
{
return
isV
;
}
/**
* @param isV 要设置的 isV
*/
public
void
setIsV
(
Boolean
isV
)
{
this
.
isV
=
isV
;
}
/* (非 Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public
String
toString
()
{
return
"SaTokenConfig [tokenName="
+
tokenName
+
", timeout="
+
timeout
+
", isShare="
+
isShare
...
...
@@ -62,4 +113,5 @@ public class SaTokenConfig {
}
sa-token-dev/src/main/java/cn/dev33/satoken/config/SaTokenConfigFactory.java
浏览文件 @
76031a77
...
...
@@ -62,7 +62,7 @@ public class SaTokenConfigFactory {
private
static
Object
initPropByMap
(
Map
<
String
,
String
>
map
,
Object
obj
){
if
(
map
==
null
){
map
=
new
HashMap
<>();
map
=
new
HashMap
<
String
,
String
>();
}
// 1、取出类型
...
...
@@ -84,7 +84,9 @@ public class SaTokenConfigFactory {
Object
valueConvert
=
getObjectByClass
(
value
,
field
.
getType
());
// 转换值类型
field
.
setAccessible
(
true
);
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
);
}
}
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/dao/SaTokenDao.java
浏览文件 @
76031a77
...
...
@@ -33,27 +33,27 @@ public interface SaTokenDao {
/**
* 根据指定key的session,如果没有,则返回空
* @param
key
键名称
* @param
sessionId
键名称
* @return
*/
public
SaSession
getSaSession
(
String
sessionId
);
/**
* 将指定session持久化
* @param key 键名称
* @param value 值
* @param session 要保存的session对象
* @param timeout 过期时间,单位: s
*/
public
void
saveSaSession
(
SaSession
session
,
long
timeout
);
/**
* 更新指定session
* 更新指定session
* @param session 要更新的session对象
*/
public
void
updateSaSession
(
SaSession
session
);
/**
* 删除一个指定的session
* @param
key 键名称
* @param
sessionId sessionId
*/
public
void
delSaSession
(
String
sessionId
);
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/dao/SaTokenDaoDefault.java
浏览文件 @
76031a77
...
...
@@ -10,9 +10,7 @@ import cn.dev33.satoken.session.SaSession;
*/
public
class
SaTokenDaoDefault
implements
SaTokenDao
{
/**
* 所有数据集合
*/
// 所有数据集合
Map
<
String
,
Object
>
dataMap
=
new
HashMap
<
String
,
Object
>();
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/session/SaSession.java
浏览文件 @
76031a77
...
...
@@ -41,14 +41,17 @@ public class SaSession implements Serializable {
}
/**
* 当前会话创建时间
* 返回当前会话创建时间
* @return 时间戳
*/
public
long
getCreateTime
()
{
return
createTime
;
}
/**
* 写入值
* 写入一个值
* @param key 名称
* @param value 值
*/
public
void
setAttribute
(
String
key
,
Object
value
)
{
dataMap
.
put
(
key
,
value
);
...
...
@@ -56,14 +59,19 @@ public class SaSession implements Serializable {
}
/**
* 取值
* 取出一个值
* @param key 名称
* @return 值
*/
public
Object
getAttribute
(
String
key
)
{
return
dataMap
.
get
(
key
);
}
/**
* 取值,并指定取不到值时的默认值
* 取值,并指定取不到值时的默认值
* @param key 名称
* @param default_value 取不到值的时候返回的默认值
* @return
*/
public
Object
getAttribute
(
String
key
,
Object
default_value
)
{
Object
value
=
getAttribute
(
key
);
...
...
@@ -75,7 +83,8 @@ public class SaSession implements Serializable {
/**
* 移除一个key
* 移除一个值
* @param key 要移除的值的名字
*/
public
void
removeAttribute
(
String
key
)
{
dataMap
.
remove
(
key
);
...
...
@@ -83,7 +92,7 @@ public class SaSession implements Serializable {
}
/**
* 清空所有
key
* 清空所有
值
*/
public
void
clearAttribute
()
{
dataMap
.
clear
();
...
...
@@ -91,14 +100,17 @@ public class SaSession implements Serializable {
}
/**
* 是否含有指定key
* 是否含有指定key
* @param key 是否含有指定值
* @return 是否含有
*/
public
boolean
containsAttribute
(
String
key
)
{
return
dataMap
.
keySet
().
contains
(
key
);
}
/**
* 当前session会话所有key
* 返回当前session会话所有key
* @return 所有值的key列表
*/
public
Set
<
String
>
getAttributeKeys
()
{
return
dataMap
.
keySet
();
...
...
@@ -106,6 +118,7 @@ public class SaSession implements Serializable {
/**
* 获取数据集合(如果更新map里的值,请调用session.update()方法避免数据过时 )
* @return 返回底层储存值的map对象
*/
public
Map
<
String
,
Object
>
getDataMap
()
{
return
dataMap
;
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java
浏览文件 @
76031a77
...
...
@@ -15,12 +15,21 @@ public class SaSessionCustomUtil {
return
SaTokenManager
.
getConfig
().
getTokenName
()
+
":"
+
session_key
+
":session:"
+
sessionId
;
}
/** 指定key的session是否存在 */
/**
* 指定key的session是否存在
* @param sessionId session的id
* @return 是否存在
*/
public
boolean
isExists
(
String
sessionId
)
{
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
)
{
SaSession
session
=
SaTokenManager
.
getDao
().
getSaSession
(
getSessionKey
(
sessionId
));
if
(
session
==
null
&&
is_create
)
{
...
...
@@ -29,12 +38,19 @@ public class SaSessionCustomUtil {
}
return
session
;
}
/** 获取指定key的session, 如果没有则新建并返回 */
/**
* 获取指定key的session, 如果没有则新建并返回
* @param sessionId key
* @return session对象
*/
public
static
SaSession
getSessionById
(
String
sessionId
)
{
return
getSessionById
(
sessionId
,
true
);
}
/** 删除指定key的session */
/**
* 删除指定key的session
* @param sessionId 删除指定key
*/
public
static
void
delSessionById
(
String
sessionId
)
{
SaTokenManager
.
getDao
().
delSaSession
(
getSessionKey
(
sessionId
));
}
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpInterface.java
浏览文件 @
76031a77
...
...
@@ -7,7 +7,12 @@ import java.util.List;
*/
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
);
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpLogic.java
浏览文件 @
76031a77
...
...
@@ -36,12 +36,18 @@ public class StpLogic {
// =================== 获取token 相关 ===================
/** 随机生成一个tokenValue */
/**
* 随机生成一个tokenValue
* @return 生成的tokenValue
*/
public
String
randomTokenValue
()
{
return
UUID
.
randomUUID
().
toString
();
}
/** 获取当前tokenValue */
/**
* 获取当前tokenValue
* @return 当前tokenValue
*/
public
String
getTokenValue
(){
// 0、获取相应对象
HttpServletRequest
request
=
SpringMVCUtil
.
getRequest
();
...
...
@@ -82,12 +88,19 @@ public class StpLogic {
return
null
;
}
/** 获取指定id的tokenValue */
/**
* 获取指定id的tokenValue
* @param login_id
* @return
*/
public
String
getTokenValueByLoginId
(
Object
login_id
)
{
return
SaTokenManager
.
getDao
().
getValue
(
getKey_LoginId
(
login_id
));
}
/** 获取当前会话的token信息:tokenName与tokenValue */
/**
* 获取当前会话的token信息:tokenName与tokenValue
* @return 一个Map对象
*/
public
Map
<
String
,
String
>
getTokenInfo
()
{
Map
<
String
,
String
>
map
=
new
HashMap
<
String
,
String
>();
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
)
{
// 1、获取相应对象
...
...
@@ -125,7 +141,9 @@ public class StpLogic {
SaCookieUtil
.
addCookie
(
SpringMVCUtil
.
getResponse
(),
getKey_tokenName
(),
tokenValue
,
"/"
,
(
int
)
config
.
getTimeout
());
// cookie注入
}
/** 当前会话注销登录 */
/**
* 当前会话注销登录
*/
public
void
logout
()
{
Object
login_id
=
getLoginId_defaultNull
();
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
)
{
// 获取相应tokenValue
...
...
@@ -152,12 +173,18 @@ public class StpLogic {
// 查询相关
/** 获取当前会话是否已经登录 */
/**
* 获取当前会话是否已经登录
* @return 是否已登录
*/
public
boolean
isLogin
()
{
return
getLoginId_defaultNull
()
!=
null
;
}
/** 获取当前会话登录id, 如果未登录,则抛出异常 */
/**
* 获取当前会话登录id, 如果未登录,则抛出异常
* @return
*/
public
Object
getLoginId
()
{
Object
login_id
=
getLoginId_defaultNull
();
if
(
login_id
==
null
)
{
...
...
@@ -166,7 +193,11 @@ public class StpLogic {
return
login_id
;
}
/** 获取当前会话登录id, 如果未登录,则返回默认值 */
/**
* 获取当前会话登录id, 如果未登录,则返回默认值
* @param default_value
* @return
*/
@SuppressWarnings
(
"unchecked"
)
public
<
T
>
T
getLoginId
(
T
default_value
)
{
Object
login_id
=
getLoginId_defaultNull
();
...
...
@@ -176,7 +207,10 @@ public class StpLogic {
return
(
T
)
login_id
;
}
/** 获取当前会话登录id, 如果未登录,则返回null */
/**
* 获取当前会话登录id, 如果未登录,则返回null
* @return
*/
public
Object
getLoginId_defaultNull
()
{
String
tokenValue
=
getTokenValue
();
if
(
tokenValue
!=
null
)
{
...
...
@@ -188,12 +222,18 @@ public class StpLogic {
return
null
;
}
/** 获取当前会话登录id, 并转换为String */
/**
* 获取当前会话登录id, 并转换为String
* @return
*/
public
String
getLoginId_asString
()
{
return
String
.
valueOf
(
getLoginId
());
}
/** 获取当前会话登录id, 并转换为int */
/**
* 获取当前会话登录id, 并转换为int
* @return
*/
public
int
getLoginId_asInt
()
{
// Object login_id = getLoginId();
// if(login_id instanceof Integer) {
...
...
@@ -202,7 +242,10 @@ public class StpLogic {
return
Integer
.
valueOf
(
String
.
valueOf
(
getLoginId
()));
}
/** 获取当前会话登录id, 并转换为long */
/**
* 获取当前会话登录id, 并转换为long
* @return
*/
public
long
getLoginId_asLong
()
{
// Object login_id = getLoginId();
// if(login_id instanceof Long) {
...
...
@@ -215,7 +258,12 @@ public class StpLogic {
// =================== session相关 ===================
/** 获取指定key的session, 如果没有,is_create=是否新建并返回 */
/**
* 获取指定key的session, 如果没有,is_create=是否新建并返回
* @param sessionId
* @param is_create
* @return
*/
protected
SaSession
getSessionBySessionId
(
String
sessionId
,
boolean
is_create
)
{
SaSession
session
=
SaTokenManager
.
getDao
().
getSaSession
(
sessionId
);
if
(
session
==
null
&&
is_create
)
{
...
...
@@ -225,12 +273,19 @@ public class StpLogic {
return
session
;
}
/** 获取指定login_id的session */
/**
* 获取指定login_id的session
* @param login_id
* @return
*/
public
SaSession
getSessionByLoginId
(
Object
login_id
)
{
return
getSessionBySessionId
(
getKey_session
(
login_id
),
false
);
}
/** 获取当前会话的session */
/**
* 获取当前会话的session
* @return
*/
public
SaSession
getSession
()
{
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
)
{
List
<
Object
>
pcodeList
=
SaTokenManager
.
getStp
().
getPermissionCodeList
(
login_id
,
login_key
);
return
!(
pcodeList
==
null
||
pcodeList
.
contains
(
pcode
)
==
false
);
}
/** 当前会话是否含有指定权限 */
/**
* 当前会话是否含有指定权限
* @param pcode
* @return
*/
public
boolean
hasPermission
(
Object
pcode
)
{
return
hasPermission
(
getLoginId
(),
pcode
);
}
/** 当前账号是否含有指定权限 , 没有就抛出异常 */
/**
* 当前账号是否含有指定权限 , 没有就抛出异常
* @param pcode
*/
public
void
checkPermission
(
Object
pcode
)
{
if
(
hasPermission
(
pcode
)
==
false
)
{
throw
new
NotPermissionException
(
pcode
);
}
}
/** 当前账号是否含有指定权限 , 【指定多个,必须全都有】 */
/**
* 当前账号是否含有指定权限 , 【指定多个,必须全都有】
* @param pcodeArray
*/
public
void
checkPermissionAnd
(
Object
...
pcodeArray
){
Object
login_id
=
getLoginId
();
List
<
Object
>
pcodeList
=
SaTokenManager
.
getStp
().
getPermissionCodeList
(
login_id
,
login_key
);
...
...
@@ -268,7 +338,10 @@ public class StpLogic {
}
}
/** 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】 */
/**
* 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】
* @param pcodeArray
*/
public
void
checkPermissionOr
(
Object
...
pcodeArray
){
Object
login_id
=
getLoginId
();
List
<
Object
>
pcodeList
=
SaTokenManager
.
getStp
().
getPermissionCodeList
(
login_id
,
login_key
);
...
...
@@ -285,19 +358,34 @@ public class StpLogic {
// =================== 返回相应key ===================
/** 获取key:客户端 tokenName */
/**
* 获取key:客户端 tokenName
* @return
*/
public
String
getKey_tokenName
()
{
return
SaTokenManager
.
getConfig
().
getTokenName
();
}
/** 获取key: tokenValue 持久化 */
/**
* 获取key: tokenValue 持久化
* @param tokenValue
* @return
*/
public
String
getKey_TokenValue
(
String
tokenValue
)
{
return
SaTokenManager
.
getConfig
().
getTokenName
()
+
":"
+
login_key
+
":token:"
+
tokenValue
;
}
/** 获取key: id 持久化 */
/**
* 获取key: id 持久化
* @param login_id
* @return
*/
public
String
getKey_LoginId
(
Object
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
)
{
return
SaTokenManager
.
getConfig
().
getTokenName
()
+
":"
+
login_key
+
":session:"
+
login_id
;
}
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/stp/StpUtil.java
浏览文件 @
76031a77
...
...
@@ -19,110 +19,175 @@ public class StpUtil {
// =================== 获取token 相关 ===================
/** 获取当前tokenValue */
/**
* 获取当前tokenValue
* @return 当前tokenValue
*/
public
static
String
getTokenValue
()
{
return
stpLogic
.
getTokenValue
();
}
/** 获取指定id的tokenValue */
/**
* 获取指定id的tokenValue
* @param login_id
* @return
*/
public
static
String
getTokenValueByLoginId
(
Object
login_id
)
{
return
stpLogic
.
getTokenValueByLoginId
(
login_id
);
}
/** 获取当前会话的token信息:tokenName与tokenValue */
/**
* 获取当前会话的token信息:tokenName与tokenValue
* @return 一个Map对象
*/
public
static
Map
<
String
,
String
>
getTokenInfo
()
{
return
stpLogic
.
getTokenInfo
();
}
// =================== 登录相关操作 ===================
/** 在当前会话上设置登录id,建议的类型:(long | int | String) */
/**
* 在当前会话上登录id
* @param login_id 登录id ,建议的类型:(long | int | String)
*/
public
static
void
setLoginId
(
Object
login_id
)
{
stpLogic
.
setLoginId
(
login_id
);
}
/** 当前会话注销登录 */
/**
* 当前会话注销登录
*/
public
static
void
logout
()
{
stpLogic
.
logout
();
}
/** 指定login_id的会话注销登录(踢人下线) */
/**
* 指定login_id的会话注销登录(踢人下线)
* @param login_id 账号id
*/
public
static
void
logoutByLoginId
(
Object
login_id
)
{
stpLogic
.
logoutByLoginId
(
login_id
);
}
// 查询相关
/** 获取当前会话是否已经登录 */
/**
* 获取当前会话是否已经登录
* @return 是否已登录
*/
public
static
boolean
isLogin
()
{
return
stpLogic
.
isLogin
();
}
/** 获取当前会话登录id, 如果未登录,则抛出异常 */
/**
* 获取当前会话登录id, 如果未登录,则抛出异常
* @return
*/
public
static
Object
getLoginId
()
{
return
stpLogic
.
getLoginId
();
}
/** 获取当前会话登录id, 如果未登录,则返回默认值 */
/**
* 获取当前会话登录id, 如果未登录,则返回默认值
* @param default_value
* @return
*/
public
static
<
T
>
T
getLoginId
(
T
default_value
)
{
return
stpLogic
.
getLoginId
(
default_value
);
}
/** 获取当前会话登录id, 如果未登录,则返回null */
/**
* 获取当前会话登录id, 如果未登录,则返回null
* @return
*/
public
static
Object
getLoginId_defaultNull
()
{
return
stpLogic
.
getLoginId_defaultNull
();
}
/** 获取当前会话登录id, 并转换为String */
/**
* 获取当前会话登录id, 并转换为String
* @return
*/
public
static
String
getLoginId_asString
()
{
return
stpLogic
.
getLoginId_asString
();
}
/** 获取当前会话登录id, 并转换为int */
/**
* 获取当前会话登录id, 并转换为int
* @return
*/
public
static
int
getLoginId_asInt
()
{
return
stpLogic
.
getLoginId_asInt
();
}
/** 获取当前会话登录id, 并转换为long */
/**
* 获取当前会话登录id, 并转换为long
* @return
*/
public
static
long
getLoginId_asLong
()
{
return
stpLogic
.
getLoginId_asLong
();
}
// =================== session相关 ===================
/** 获取指定login_id的session */
/**
* 获取指定login_id的session
* @param login_id
* @return
*/
public
static
SaSession
getSessionByLoginId
(
Object
login_id
)
{
return
stpLogic
.
getSessionByLoginId
(
login_id
);
}
/** 获取当前会话的session */
/**
* 获取当前会话的session
* @return
*/
public
static
SaSession
getSession
()
{
return
stpLogic
.
getSession
();
}
// =================== 权限验证操作 ===================
/** 指定login_id是否含有指定权限 */
/**
* 指定login_id是否含有指定权限
* @param login_id
* @param pcode
* @return
*/
public
static
boolean
hasPermission
(
Object
login_id
,
Object
pcode
)
{
return
stpLogic
.
hasPermission
(
login_id
,
pcode
);
}
/** 当前会话是否含有指定权限 */
/**
* 当前会话是否含有指定权限
* @param pcode
* @return
*/
public
static
boolean
hasPermission
(
Object
pcode
)
{
return
stpLogic
.
hasPermission
(
pcode
);
}
/** 当前账号是否含有指定权限 , 没有就抛出异常 */
/**
* 当前账号是否含有指定权限 , 没有就抛出异常
* @param pcode
*/
public
static
void
checkPermission
(
Object
pcode
)
{
stpLogic
.
checkPermission
(
pcode
);
}
/** 当前账号是否含有指定权限 , 【指定多个,必须全都有】 */
/**
* 当前账号是否含有指定权限 , 【指定多个,必须全都有】
* @param pcodeArray
*/
public
static
void
checkPermissionAnd
(
Object
...
pcodeArray
)
{
stpLogic
.
checkPermissionAnd
(
pcodeArray
);
}
/** 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】 */
/**
* 当前账号是否含有指定权限 , 【指定多个,有一个就可以了】
* @param pcodeArray
*/
public
static
void
checkPermissionOr
(
Object
...
pcodeArray
)
{
stpLogic
.
checkPermissionOr
(
pcodeArray
);
}
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/util/SaCookieUtil.java
浏览文件 @
76031a77
...
...
@@ -15,6 +15,9 @@ public class SaCookieUtil {
/**
* 获取指定cookie
* @param request
* @param cookieName
* @return
*/
public
static
Cookie
getCookie
(
HttpServletRequest
request
,
String
cookieName
)
{
Cookie
[]
cookies
=
request
.
getCookies
();
...
...
@@ -32,6 +35,11 @@ public class SaCookieUtil {
/**
* 添加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
)
{
Cookie
cookie
=
new
Cookie
(
name
,
value
);
...
...
@@ -46,6 +54,9 @@ public class SaCookieUtil {
/**
* 删除cookie
* @param request
* @param response
* @param name
*/
public
static
void
delCookie
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
name
)
{
Cookie
[]
cookies
=
request
.
getCookies
();
...
...
@@ -62,6 +73,10 @@ public class SaCookieUtil {
/**
* 修改cookie的value值
* @param request
* @param response
* @param name
* @param value
*/
public
static
void
updateCookie
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
name
,
String
value
)
{
Cookie
[]
cookies
=
request
.
getCookies
();
...
...
sa-token-dev/src/main/java/cn/dev33/satoken/util/SpringMVCUtil.java
浏览文件 @
76031a77
...
...
@@ -13,7 +13,10 @@ import org.springframework.web.context.request.ServletRequestAttributes;
*/
public
class
SpringMVCUtil
{
// 获取当前会话的 request
/**
* 获取当前会话的 request
* @return
*/
public
static
HttpServletRequest
getRequest
()
{
ServletRequestAttributes
servletRequestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
// 大善人SpringMVC提供的封装
if
(
servletRequestAttributes
==
null
)
{
...
...
@@ -22,7 +25,10 @@ public class SpringMVCUtil {
return
servletRequestAttributes
.
getRequest
();
}
// 获取当前会话的
/**
* 获取当前会话的 response
* @return
*/
public
static
HttpServletResponse
getResponse
()
{
ServletRequestAttributes
servletRequestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
// 大善人SpringMVC提供的封装
if
(
servletRequestAttributes
==
null
)
{
...
...
sa-token-doc/doc/start/download.md
浏览文件 @
76031a77
...
...
@@ -2,7 +2,6 @@
------
## 源码
你可以通过
`github`
或者
`gitee`
来获取源码
-
github地址:
[
https://github.com/click33/sa-token
](
https://github.com/click33/sa-token
)
...
...
@@ -14,9 +13,20 @@
-
sa-token-doc: 文档介绍
## jar包下载
[
点击下载
](
https://color-test.oss-cn-qingdao.aliyuncs.com/sa-token/sa-token-spring-1.0.0.jar
)
## 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>
```
...
...
sa-token-doc/doc/start/example.md
浏览文件 @
76031a77
...
...
@@ -11,18 +11,15 @@
在IDE中新建一个Springboot项目,例如:
`sa-token-demo-springboot`
(不会的同学请自行百度或者参考github示例)
#### 2、设置jar包依赖
-
在项目根目录新建文件夹
`lib`
,将
`sa-token-spring-xxx.jar`
复制到其中
-
并在
`pom.xml`
中添加依赖:
-
在
`pom.xml`
中添加依赖:
```
xml
<!-- sa-token 安全认证 -->
<dependency>
<groupId>
cn.dev33.sa-token
</groupId>
<artifactId>
sa-token-spring
</artifactId>
<version>
1.0.0
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/lib/sa-token-spring-1.0.0.jar
</systemPath>
</dependency>
<!-- sa-token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>
cn.dev33
</groupId>
<artifactId>
sa-token
</artifactId>
<version>
1.0.0
</version>
</dependency>
```
#### 3、配置文件
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录