2024-05-17 18:28:59 +08:00
|
|
|
// Copyright 2021 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
|
2021-06-17 21:18:05 +08:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-30 11:24:07 +08:00
|
|
|
// MatchRequest 检查是否匹配请求
|
|
|
|
|
func (this *HTTPAuthPolicy) MatchRequest(req *http.Request) bool {
|
2021-06-17 21:18:05 +08:00
|
|
|
if this.method == nil {
|
2022-08-30 11:24:07 +08:00
|
|
|
return false
|
2021-06-17 21:18:05 +08:00
|
|
|
}
|
2022-08-30 11:24:07 +08:00
|
|
|
return this.method.MatchRequest(req)
|
2021-06-17 21:18:05 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Filter 过滤
|
2022-08-30 11:24:07 +08:00
|
|
|
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) {
|
2021-06-17 21:18:05 +08:00
|
|
|
if this.method == nil {
|
|
|
|
|
// 如果设置正确的方法,我们直接允许请求
|
2022-08-30 11:24:07 +08:00
|
|
|
return true, "", false, nil
|
2021-06-17 21:18:05 +08:00
|
|
|
}
|
|
|
|
|
return this.method.Filter(req, subReqFunc, formatter)
|
|
|
|
|
}
|
2021-06-19 21:36:13 +08:00
|
|
|
|
|
|
|
|
// Method 获取认证实例
|
|
|
|
|
func (this *HTTPAuthPolicy) Method() HTTPAuthMethodInterface {
|
|
|
|
|
return this.method
|
|
|
|
|
}
|