Documentation ¶
Index ¶
- Variables
- type Condition
- type ControllerAction
- type Member
- type Policy
- type Policys
- func (ctl *Policys) AddMember(member *Member)
- func (ctl *Policys) AddPolicy(policy *Policy) error
- func (ctl *Policys) AddPolicyString(body string) error
- func (ctl *Policys) GetMember(userid int) []*Member
- func (ctl *Policys) HandleHTTP(ctx eudore.Context)
- func (ctl *Policys) HandleRuntime(eudore.Context) any
- func (ctl *Policys) NewBearer(userid int, username, policy string, expires int64) string
- type SignatureUser
- type Signaturer
- type Statement
Constants ¶
This section is empty.
Variables ¶
var ( BearerPrefix = `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.` ErrVerifyTokenInvalid = errors.New("error: incorrect of results from token parsing") ErrVerifyResultInvalid = errors.New("error:jwt validation error") // ErrFormatPolcyUnmarshalError 定义策略json解析错误。 ErrFormatPolcyUnmarshalError = "policy unmarshal json error: %v" // ErrFormatDataParseError 定义策略数据解析错误。 ErrFormatDataParseError = "policy data parse %s error: %v" // ErrFormatConditionsUnmarshalError 定义策略条件json解析错误。 ErrFormatConditionsUnmarshalError = "policy conditions unmarshal json %s error: %v" // ErrFormatConditionsParseError 定义NewConditions解析策略条件错误。 ErrFormatConditionsParseError = "policy conditions parse %s error: %v" // ErrFormatConditionParseError 定义策略指定条件解析错误。 ErrFormatConditionParseError = "policy conditions %s parse %s error: %v" )
Functions ¶
This section is empty.
Types ¶
type Condition ¶
Condition 定义策略使用的条件。
func NewConditions ¶
func NewConditions(data map[string]json.RawMessage) ([]Condition, error)
NewConditions 方法解析多个策略条件。
type ControllerAction ¶
type ControllerAction struct{}
ControllerAction 定义生成action参考控制器。
func (ControllerAction) ControllerParam ¶
func (ControllerAction) ControllerParam(pkg, name, method string) string
ControllerParam 方法定义ControllerAction生成action参数。
type Member ¶
type Member struct { UserID int `json:"user_id" alias:"user_id"` PolicyID int `json:"policy_id" alias:"policy_id"` Index int `json:"index" alias:"index" description:"越大优先级越高,如果小于0移除授权"` Description string `json:"description,omitempty" alias:"description"` Expiration time.Time `json:"expiration,omitempty" alias:"expiration"` Policy *Policy `json:"-" alias:"-"` }
Member 定义Policy授权对象。
type Policy ¶
type Policy struct { PolicyID int `json:"policy_id" alias:"policy_id"` PolicyName string `json:"policy_name,omitempty" alias:"policy_name"` Description string `json:"description,omitempty" alias:"description"` Statement []Statement `json:"statement" alias:"statement"` }
Policy 定义一个策略.
type Policys ¶
type Policys struct { Policys sync.Map // policyid:policy Members sync.Map // userid:policys // 默认使用jwt sha1进行签名,默认值:NewSignaturerJwt([]byte("eudore")), Signaturer Signaturer // 获取请求action的函数 // 默认返回action param ActionFunc func(eudore.Context) string // 获取请求资源的函数 // 默认移除请求路径的前缀"/api/"为资源路径 ResourceFunc func(eudore.Context) string // 获取用户id的函数 // 默认从请求Authorization header获取jwt Bearer数据解析用户信息。 GetUserFunc func(eudore.Context) (int, error) // 权限拒绝时执行的函数 // 默认返回403和相关权限信息 ForbendFunc func(eudore.Context, string, string, string) }
Policys 定义策略访问控制器。
func (*Policys) AddMember ¶
AddMember 方法对指定userid和policyid进行授权。
Index越大匹配优先级越高,如果小于0则解除授权。
使用Expiration属性设置授权过期时间,Description属性仅记录描述。
func (*Policys) AddPolicyString ¶
AddPolicyString 方法添加一个策略字符串。
func (*Policys) HandleHTTP ¶
HandleHTTP 方法实现eudore.handlerHTTP(handler.go#L49)接口, 作为请求处理中间件的处理函数,实现访问控制鉴权。
请求的param action为空回跳过鉴权方法。
func (*Policys) HandleRuntime ¶
HandleRuntime 方法返回Policys运行时数据。
type SignatureUser ¶
type SignatureUser struct { // 唯一必要的属性,指定请求的userid UserID int `alias:"user_id" json:"user_id" yaml:"user_id" protobuf:"name=user_id"` UserName string `alias:"user_name" json:"user_name" yaml:"user_name" protobuf:"name=user_name"` // 如果非空,则为base64([]Statement) Policy string `json:"policy,omitempty" alias:"policy"` Expiration int64 `json:"expiration" alias:"expiration"` }
SignatureUser 定义默认的用户信息,也可以组合该对象使用自定义签名对象。
type Signaturer ¶
Signaturer 定义Policys进行用户信息签名的对象。
func NewSignaturerJwt ¶
func NewSignaturerJwt(secret []byte) Signaturer
NewSignaturerJwt 函数创建一个Jwt Signaturer。
type Statement ¶
type Statement struct { Effect bool `json:"effect"` Action []string `json:"action"` Resource []string `json:"resource"` Description string `json:"description,omitempty" alias:"description"` Conditions map[string]json.RawMessage `json:"conditions,omitempty"` Data map[string][]json.RawMessage `json:"data,omitempty"` // contains filtered or unexported fields }
Statement 定义一条策略内容。
func (Statement) MatchAction ¶
MatchAction 方法匹配描述的条件。
func (Statement) MatchCondition ¶
MatchCondition 方法匹配描述的条件。
func (Statement) MatchResource ¶
MatchResource 方法匹配描述的资源。
func (*Statement) UnmarshalJSON ¶
UnmarshalJSON 方法实现json反序列化。