Skip to content

Commit 2c16993

Browse files
committed
主路由和子路由同时添加权限控制
1 parent 5cb3202 commit 2c16993

File tree

4 files changed

+61
-17
lines changed

4 files changed

+61
-17
lines changed

http/router/entry.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,21 @@ func (e *Entry) EnableAuth() {
2525
e.AuthEnable = true
2626
}
2727

28+
// DisableAuth 不启用身份验证
29+
func (e *Entry) DisableAuth() {
30+
e.AuthEnable = false
31+
}
32+
2833
// EnablePermission 启用授权验证
2934
func (e *Entry) EnablePermission() {
3035
e.PermissionEnable = true
3136
}
3237

38+
// DisablePermission 禁用授权验证
39+
func (e *Entry) DisablePermission() {
40+
e.PermissionEnable = false
41+
}
42+
3343
// NewEntrySet 实例
3444
func NewEntrySet() *EntrySet {
3545
return &EntrySet{}

http/router/httprouter/httprouter.go

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ type httpRouter struct {
1717
r *httprouter.Router
1818
l logger.Logger
1919

20-
middlewareChain []router.Middleware
21-
entrySet *entrySet
22-
auther router.Auther
23-
mergedHandler http.Handler
24-
labels []*router.Label
25-
notFound http.Handler
20+
middlewareChain []router.Middleware
21+
entrySet *entrySet
22+
auther router.Auther
23+
mergedHandler http.Handler
24+
labels []*router.Label
25+
notFound http.Handler
26+
authEnable bool
27+
permissionEnable bool
2628
}
2729

2830
// New 基于社区的httprouter进行封装
@@ -52,10 +54,12 @@ func (r *httpRouter) Use(m router.Middleware) {
5254
func (r *httpRouter) Handle(method, path string, h http.HandlerFunc) router.EntryDecorator {
5355
e := &entry{
5456
Entry: &router.Entry{
55-
Method: method,
56-
Path: path,
57-
FunctionName: router.GetHandlerFuncName(h),
58-
Labels: map[string]string{},
57+
Method: method,
58+
Path: path,
59+
FunctionName: router.GetHandlerFuncName(h),
60+
Labels: map[string]string{},
61+
AuthEnable: r.authEnable,
62+
PermissionEnable: r.permissionEnable,
5963
},
6064
h: h,
6165
}
@@ -64,6 +68,14 @@ func (r *httpRouter) Handle(method, path string, h http.HandlerFunc) router.Entr
6468
return e.Entry
6569
}
6670

71+
func (r *httpRouter) Auth(isEnable bool) {
72+
r.authEnable = isEnable
73+
}
74+
75+
func (r *httpRouter) Permission(isEnable bool) {
76+
r.permissionEnable = isEnable
77+
}
78+
6779
func (r *httpRouter) SetAuther(at router.Auther) {
6880
r.auther = at
6981
return

http/router/httprouter/subrouter.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ type subRouter struct {
2121
root *httpRouter
2222
labels []*router.Label
2323
middlewareChain []router.Middleware
24+
authEnable bool
25+
permissionEnable bool
2426
}
2527

2628
func (r *subRouter) Use(m router.Middleware) {
@@ -43,25 +45,33 @@ func (r *subRouter) With(m ...router.Middleware) router.SubRouter {
4345
func (r *subRouter) Handle(method, path string, h http.HandlerFunc) router.EntryDecorator {
4446
e := &entry{
4547
Entry: &router.Entry{
46-
Resource: r.resourceName,
47-
Method: method,
48-
Path: path,
49-
FunctionName: router.GetHandlerFuncName(h),
50-
Labels: map[string]string{},
51-
AuthEnable: true,
48+
Resource: r.resourceName,
49+
Method: method,
50+
Path: path,
51+
FunctionName: router.GetHandlerFuncName(h),
52+
Labels: map[string]string{},
53+
AuthEnable: r.authEnable,
54+
PermissionEnable: r.permissionEnable,
5255
},
5356
h: h,
5457
}
5558

5659
r.add(e)
57-
5860
return e.Entry
5961
}
6062

6163
func (r *subRouter) SetLabel(labels ...*router.Label) {
6264
r.labels = append(r.labels, labels...)
6365
}
6466

67+
func (r *subRouter) Auth(isEnable bool) {
68+
r.authEnable = isEnable
69+
}
70+
71+
func (r *subRouter) Permission(isEnable bool) {
72+
r.permissionEnable = isEnable
73+
}
74+
6575
func (r *subRouter) ResourceRouter(resourceName string, labels ...*router.Label) router.ResourceRouter {
6676
return &subRouter{
6777
resourceName: resourceName,

http/router/router.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ type Router interface {
1111
// 添加中间件
1212
Use(m Middleware)
1313

14+
// 是否启用用户身份验证
15+
Auth(isEnable bool)
16+
17+
// 是否启用用户权限验证
18+
Permission(isEnable bool)
19+
1420
// 添加受认证保护的路由
1521
Handle(method, path string, h http.HandlerFunc) EntryDecorator
1622

@@ -44,6 +50,10 @@ type ResourceRouter interface {
4450

4551
// SubRouter 子路由或者分组路由
4652
type SubRouter interface {
53+
// 是否启用用户身份验证
54+
Auth(isEnable bool)
55+
// 是否启用用户权限验证
56+
Permission(isEnable bool)
4757
// 添加中间件
4858
Use(m Middleware)
4959
// SetLabel 设置路由标签, 作用于Entry上
@@ -61,5 +71,7 @@ type EntryDecorator interface {
6171
// SetLabel 设置子路由标签, 作用于Entry上
6272
AddLabel(...*Label) EntryDecorator
6373
EnableAuth()
74+
DisableAuth()
6475
EnablePermission()
76+
DisablePermission()
6577
}

0 commit comments

Comments
 (0)