Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
shengzhang_
sa-token
提交
7ffe6cb0
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 搜索 >>
提交
7ffe6cb0
编写于
1月 04, 2021
作者:
shengzhang_
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
补上注解拦截器里漏掉验证@SaCheckRole的bug
上级
dbba90d8
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
33 addition
and
8 deletion
+33
-8
sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java
...-springboot/src/main/java/com/pj/test/TestController.java
+4
-2
sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaCheckInterceptor.java
...java/cn/dev33/satoken/interceptor/SaCheckInterceptor.java
+29
-6
未找到文件。
sa-token-demo-springboot/src/main/java/com/pj/test/TestController.java
浏览文件 @
7ffe6cb0
...
...
@@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import
cn.dev33.satoken.annotation.SaCheckLogin
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.annotation.SaCheckRole
;
import
cn.dev33.satoken.annotation.SaMode
;
import
cn.dev33.satoken.session.SaSessionCustomUtil
;
import
cn.dev33.satoken.stp.SaTokenInfo
;
...
...
@@ -151,13 +152,14 @@ public class TestController {
// 测试注解式鉴权, 浏览器访问: http://localhost:8081/test/atCheck
@SaCheckLogin
// 注解式鉴权:当前会话必须登录才能通过
@SaCheckRole
(
"super-admin"
)
// 注解式鉴权:当前会话必须具有指定角色标识才能通过
@SaCheckPermission
(
"user-add"
)
// 注解式鉴权:当前会话必须具有指定权限才能通过
@RequestMapping
(
"atCheck"
)
public
AjaxJson
atCheck
()
{
System
.
out
.
println
(
"======================= 进入方法,测试注解鉴权接口 ========================= "
);
System
.
out
.
println
(
"只有通过注解鉴权,才能进入此方法"
);
StpUtil
.
checkActivityTimeout
();
StpUtil
.
updateLastActivityToNow
();
//
StpUtil.checkActivityTimeout();
//
StpUtil.updateLastActivityToNow();
return
AjaxJson
.
getSuccess
();
}
...
...
sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaCheckInterceptor.java
浏览文件 @
7ffe6cb0
...
...
@@ -8,6 +8,7 @@ import org.springframework.web.servlet.HandlerInterceptor;
import
cn.dev33.satoken.annotation.SaCheckLogin
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
cn.dev33.satoken.annotation.SaCheckRole
;
import
cn.dev33.satoken.annotation.SaMode
;
import
cn.dev33.satoken.stp.StpLogic
;
import
cn.dev33.satoken.stp.StpUtil
;
...
...
@@ -58,25 +59,47 @@ public class SaCheckInterceptor implements HandlerInterceptor {
stpLogic
.
checkLogin
();
}
// ----------- 验证角色
// 验证方法上的
SaCheckRole
scr
=
method
.
getMethodAnnotation
(
SaCheckRole
.
class
);
if
(
scr
!=
null
)
{
String
[]
roleArray
=
scr
.
value
();
if
(
scr
.
mode
()
==
SaMode
.
AND
)
{
stpLogic
.
checkRoleAnd
(
roleArray
);
// 必须全部都有
}
else
{
stpLogic
.
checkRoleOr
(
roleArray
);
// 有一个就行了
}
}
// 验证类上的
scr
=
method
.
getBeanType
().
getAnnotation
(
SaCheckRole
.
class
);
if
(
scr
!=
null
)
{
String
[]
roleArray
=
scr
.
value
();
if
(
scr
.
mode
()
==
SaMode
.
AND
)
{
stpLogic
.
checkRoleAnd
(
roleArray
);
// 必须全部都有
}
else
{
stpLogic
.
checkRoleOr
(
roleArray
);
// 有一个就行了
}
}
// ----------- 验证权限
// 验证方法上的
SaCheckPermission
scp
=
method
.
getMethodAnnotation
(
SaCheckPermission
.
class
);
if
(
scp
!=
null
)
{
String
[]
permission
Code
Array
=
scp
.
value
();
String
[]
permissionArray
=
scp
.
value
();
if
(
scp
.
mode
()
==
SaMode
.
AND
)
{
stpLogic
.
checkPermissionAnd
(
permission
Code
Array
);
// 必须全部都有
stpLogic
.
checkPermissionAnd
(
permissionArray
);
// 必须全部都有
}
else
{
stpLogic
.
checkPermissionOr
(
permission
Code
Array
);
// 有一个就行了
stpLogic
.
checkPermissionOr
(
permissionArray
);
// 有一个就行了
}
}
// 验证类上的
scp
=
method
.
getBeanType
().
getAnnotation
(
SaCheckPermission
.
class
);
if
(
scp
!=
null
)
{
String
[]
permission
Code
Array
=
scp
.
value
();
String
[]
permissionArray
=
scp
.
value
();
if
(
scp
.
mode
()
==
SaMode
.
AND
)
{
stpLogic
.
checkPermissionAnd
(
permission
Code
Array
);
// 必须全部都有
stpLogic
.
checkPermissionAnd
(
permissionArray
);
// 必须全部都有
}
else
{
stpLogic
.
checkPermissionOr
(
permission
Code
Array
);
// 有一个就行了
stpLogic
.
checkPermissionOr
(
permissionArray
);
// 有一个就行了
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录