Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FLIPPED-AURORA
gin-vue-admin
提交
cdd965f5
G
gin-vue-admin
项目概览
FLIPPED-AURORA
/
gin-vue-admin
大约 1 年 前同步成功
通知
342
Star
18155
Fork
5506
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
cdd965f5
编写于
11月 25, 2021
作者:
Mr.奇淼(
提交者:
GitHub
11月 25, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #815 from dyzsoft/master
优化:casbin验证优化
上级
82c55431
62153288
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
8 addition
and
32 deletion
+8
-32
server/go.mod
server/go.mod
+0
-1
server/middleware/casbin_rbac.go
server/middleware/casbin_rbac.go
+2
-2
server/resource/rbac_model.conf
server/resource/rbac_model.conf
+1
-1
server/service/system/sys_casbin.go
server/service/system/sys_casbin.go
+0
-28
server/service/system/sys_user.go
server/service/system/sys_user.go
+5
-0
未找到文件。
server/go.mod
浏览文件 @
cdd965f5
...
...
@@ -16,7 +16,6 @@ require (
github.com/go-redis/redis/v8 v8.11.0
github.com/go-sql-driver/mysql v1.5.0
github.com/gookit/color v1.3.1
github.com/jackc/pgx/v4 v4.7.1
github.com/jordan-wright/email v0.0.0-20200824153738-3f5bafa1cd84
github.com/mojocn/base64Captcha v1.3.1
github.com/natefinch/lumberjack v2.0.0+incompatible
...
...
server/middleware/casbin_rbac.go
浏览文件 @
cdd965f5
...
...
@@ -14,8 +14,8 @@ var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService
func
CasbinHandler
()
gin
.
HandlerFunc
{
return
func
(
c
*
gin
.
Context
)
{
waitUse
,
_
:=
utils
.
GetClaims
(
c
)
// 获取请求的
URI
obj
:=
c
.
Request
.
URL
.
RequestURI
()
// 获取请求的
PATH
obj
:=
c
.
Request
.
URL
.
Path
// 获取请求方法
act
:=
c
.
Request
.
Method
// 获取用户的角色
...
...
server/resource/rbac_model.conf
浏览文件 @
cdd965f5
...
...
@@ -11,4 +11,4 @@ g = _, _
e
=
some
(
where
(
p
.
eft
==
allow
))
[
matchers
]
m
=
r
.
sub
==
p
.
sub
&&
ParamsMatch
(
r
.
obj
,
p
.
obj
) &&
r
.
act
==
p
.
act
m
=
r
.
sub
==
p
.
sub
&&
keyMatch2
(
r
.
obj
,
p
.
obj
) &&
r
.
act
==
p
.
act
server/service/system/sys_casbin.go
浏览文件 @
cdd965f5
...
...
@@ -2,11 +2,9 @@ package system
import
(
"errors"
"strings"
"sync"
"github.com/casbin/casbin/v2"
"github.com/casbin/casbin/v2/util"
gormadapter
"github.com/casbin/gorm-adapter/v3"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/system"
...
...
@@ -104,33 +102,7 @@ func (casbinService *CasbinService) Casbin() *casbin.SyncedEnforcer {
once
.
Do
(
func
()
{
a
,
_
:=
gormadapter
.
NewAdapterByDB
(
global
.
GVA_DB
)
syncedEnforcer
,
_
=
casbin
.
NewSyncedEnforcer
(
global
.
GVA_CONFIG
.
Casbin
.
ModelPath
,
a
)
syncedEnforcer
.
AddFunction
(
"ParamsMatch"
,
casbinService
.
ParamsMatchFunc
)
})
_
=
syncedEnforcer
.
LoadPolicy
()
return
syncedEnforcer
}
//@author: [piexlmax](https://github.com/piexlmax)
//@function: ParamsMatch
//@description: 自定义规则函数
//@param: fullNameKey1 string, key2 string
//@return: bool
func
(
casbinService
*
CasbinService
)
ParamsMatch
(
fullNameKey1
string
,
key2
string
)
bool
{
key1
:=
strings
.
Split
(
fullNameKey1
,
"?"
)[
0
]
// 剥离路径后再使用casbin的keyMatch2
return
util
.
KeyMatch2
(
key1
,
key2
)
}
//@author: [piexlmax](https://github.com/piexlmax)
//@function: ParamsMatchFunc
//@description: 自定义规则函数
//@param: args ...interface{}
//@return: interface{}, error
func
(
casbinService
*
CasbinService
)
ParamsMatchFunc
(
args
...
interface
{})
(
interface
{},
error
)
{
name1
:=
args
[
0
]
.
(
string
)
name2
:=
args
[
1
]
.
(
string
)
return
casbinService
.
ParamsMatch
(
name1
,
name2
),
nil
}
server/service/system/sys_user.go
浏览文件 @
cdd965f5
...
...
@@ -2,6 +2,7 @@ package system
import
(
"errors"
"fmt"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
...
...
@@ -39,6 +40,10 @@ func (userService *UserService) Register(u system.SysUser) (err error, userInter
//@return: err error, userInter *model.SysUser
func
(
userService
*
UserService
)
Login
(
u
*
system
.
SysUser
)
(
err
error
,
userInter
*
system
.
SysUser
)
{
if
nil
==
global
.
GVA_DB
{
return
fmt
.
Errorf
(
"db not init"
),
nil
}
var
user
system
.
SysUser
u
.
Password
=
utils
.
MD5V
([]
byte
(
u
.
Password
))
err
=
global
.
GVA_DB
.
Where
(
"username = ? AND password = ?"
,
u
.
Username
,
u
.
Password
)
.
Preload
(
"Authorities"
)
.
Preload
(
"Authority"
)
.
First
(
&
user
)
.
Error
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录