-
Notifications
You must be signed in to change notification settings - Fork 3
/
http_auth_policy.go
40 lines (33 loc) · 1.12 KB
/
http_auth_policy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package serverconfigs
import (
"net/http"
)
// HTTPAuthPolicy HTTP认证策略
type HTTPAuthPolicy struct {
Id int64 `json:"id"`
Name string `json:"name"`
IsOn bool `json:"isOn"`
Type HTTPAuthType `json:"type"`
Params map[string]interface{} `json:"params"`
method HTTPAuthMethodInterface
}
// MatchRequest 检查是否匹配请求
func (this *HTTPAuthPolicy) MatchRequest(req *http.Request) bool {
if this.method == nil {
return false
}
return this.method.MatchRequest(req)
}
// Filter 过滤
func (this *HTTPAuthPolicy) Filter(req *http.Request, subReqFunc func(subReq *http.Request) (status int, err error), formatter func(string) string) (ok bool, newURI string, uriChanged bool, err error) {
if this.method == nil {
// 如果设置正确的方法,我们直接允许请求
return true, "", false, nil
}
return this.method.Filter(req, subReqFunc, formatter)
}
// Method 获取认证实例
func (this *HTTPAuthPolicy) Method() HTTPAuthMethodInterface {
return this.method
}