阶段性提交

This commit is contained in:
刘祥超
2021-06-17 21:18:05 +08:00
parent 04e567b6d8
commit 0226b4aa98
15 changed files with 1590 additions and 130 deletions

View File

@@ -0,0 +1,55 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package serverconfigs
import (
"errors"
"net/http"
)
type HTTPAuthType = string
const (
HTTPAuthTypeBasicAuth HTTPAuthType = "basicAuth" // BasicAuth
HTTPAuthTypeSubRequest HTTPAuthType = "subRequest" // 子请求
)
// 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
}
// Init 初始化
func (this *HTTPAuthPolicy) Init() error {
switch this.Type {
case HTTPAuthTypeBasicAuth:
this.method = NewHTTPAuthBasicMethod()
case HTTPAuthTypeSubRequest:
this.method = NewHTTPAuthSubRequestMethod()
}
if this.method == nil {
return errors.New("unknown auth method '" + this.Type + "'")
}
err := this.method.Init(this.Params)
if err != nil {
return err
}
return nil
}
// Filter 过滤
func (this *HTTPAuthPolicy) Filter(req *http.Request, subReqFunc func(subReq *http.Request) (status int, err error), formatter func(string) string) (bool, error) {
if this.method == nil {
// 如果设置正确的方法,我们直接允许请求
return true, nil
}
return this.method.Filter(req, subReqFunc, formatter)
}