Documentation
¶
Index ¶
- Variables
- type AuthInterceptor
- func (i *AuthInterceptor) AddPublicMethod(fullMethodName string)
- func (i *AuthInterceptor) AddResourceMapping(fullMethodName, resource, action string)
- func (i *AuthInterceptor) StreamServerInterceptor() grpc.StreamServerInterceptor
- func (i *AuthInterceptor) UnaryServerInterceptor() grpc.UnaryServerInterceptor
- type Authenticator
- type Authorizer
- type CasbinAuthorizer
- type CompositeTokenExtractor
- type ConstantTokenExtractor
- type ContextKey
- type Credential
- type MetadataTokenExtractor
- type RBACAuthorizer
- func (a *RBACAuthorizer) AddPermissionToRole(role string, permission string) error
- func (a *RBACAuthorizer) AddRole(role string, permissions []string)
- func (a *RBACAuthorizer) CheckPermission(ctx context.Context, user *User, resource string, action string) (bool, error)
- func (a *RBACAuthorizer) MapResourceAction(resource, action, permission string)
- func (a *RBACAuthorizer) RemovePermissionFromRole(role string, permission string) error
- func (a *RBACAuthorizer) RemoveRole(role string)
- type ResourceAction
- type TokenExtractor
- type TokenInfo
- type TokenManager
- type User
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidCredentials = errors.New("无效的凭证") ErrInvalidToken = errors.New("无效的令牌") ErrTokenExpired = errors.New("令牌已过期") ErrPermissionDenied = errors.New("权限被拒绝") ErrUserNotFound = errors.New("用户未找到") ErrTokenRevoked = errors.New("令牌已被撤销") )
定义常见错误
var ( ErrRoleNotFound = errors.New("角色未找到") ErrPermissionNotFound = errors.New("权限未找到") )
var (
ErrNoTokenFound = errors.New("未找到令牌")
)
Functions ¶
This section is empty.
Types ¶
type AuthInterceptor ¶
type AuthInterceptor struct {
// contains filtered or unexported fields
}
AuthInterceptor 是一个GRPC认证拦截器
func NewAuthInterceptor ¶
func NewAuthInterceptor( tokenExtractor TokenExtractor, tokenManager TokenManager, authorizer Authorizer, ) *AuthInterceptor
NewAuthInterceptor 创建一个新的认证拦截器
func (*AuthInterceptor) AddPublicMethod ¶ added in v0.1.1
func (i *AuthInterceptor) AddPublicMethod(fullMethodName string)
AddPublicMethod 添加一个不需要认证的方法
func (*AuthInterceptor) AddResourceMapping ¶ added in v0.1.1
func (i *AuthInterceptor) AddResourceMapping(fullMethodName, resource, action string)
AddResourceMapping 添加方法到资源和动作的映射
func (*AuthInterceptor) StreamServerInterceptor ¶
func (i *AuthInterceptor) StreamServerInterceptor() grpc.StreamServerInterceptor
StreamServerInterceptor 返回一个流服务器拦截器
func (*AuthInterceptor) UnaryServerInterceptor ¶
func (i *AuthInterceptor) UnaryServerInterceptor() grpc.UnaryServerInterceptor
UnaryServerInterceptor 返回一个一元服务器拦截器
type Authenticator ¶
type Authenticator interface {
// Authenticate 验证用户凭证并返回用户信息
Authenticate(ctx context.Context, credential Credential) (*User, error)
}
Authenticator 定义认证接口
type Authorizer ¶
type Authorizer interface {
// CheckPermission 检查用户是否有特定权限
CheckPermission(ctx context.Context, user *User, resource string, action string) (bool, error)
}
Authorizer 定义授权接口
type CasbinAuthorizer ¶ added in v0.1.1
type CasbinAuthorizer struct {
}
CasbinAuthorizer 使用Casbin的授权器 这里只提供框架代码,实际实现需要导入casbin依赖
type CompositeTokenExtractor ¶ added in v0.1.1
type CompositeTokenExtractor struct {
// contains filtered or unexported fields
}
CompositeTokenExtractor 组合多个令牌提取器
func NewCompositeTokenExtractor ¶ added in v0.1.1
func NewCompositeTokenExtractor(extractors ...TokenExtractor) *CompositeTokenExtractor
NewCompositeTokenExtractor 创建一个组合令牌提取器
type ConstantTokenExtractor ¶ added in v0.1.1
type ConstantTokenExtractor struct {
// contains filtered or unexported fields
}
ConstantTokenExtractor 始终返回一个常量令牌(主要用于测试)
func NewConstantTokenExtractor ¶ added in v0.1.1
func NewConstantTokenExtractor(token string) *ConstantTokenExtractor
NewConstantTokenExtractor 创建一个常量令牌提取器
type ContextKey ¶ added in v0.1.1
type ContextKey string
ContextKey 是上下文中用户信息的键
const ( // UserContextKey 是上下文中用户信息的键名 UserContextKey ContextKey = "user" )
type Credential ¶ added in v0.1.1
type Credential struct {
// 用户名或用户标识符
Username string
// 密码或令牌
Password string
// 其他认证信息
Extra map[string]string
}
Credential 表示用户凭证
type MetadataTokenExtractor ¶ added in v0.1.1
type MetadataTokenExtractor struct {
// contains filtered or unexported fields
}
MetadataTokenExtractor 从GRPC元数据中提取令牌
func NewMetadataTokenExtractor ¶ added in v0.1.1
func NewMetadataTokenExtractor(key string, prefix string) *MetadataTokenExtractor
NewMetadataTokenExtractor 创建一个新的元数据令牌提取器
type RBACAuthorizer ¶ added in v0.1.1
type RBACAuthorizer struct {
// contains filtered or unexported fields
}
RBACAuthorizer 基于角色的访问控制授权器
func NewRBACAuthorizer ¶ added in v0.1.1
func NewRBACAuthorizer() *RBACAuthorizer
NewRBACAuthorizer 创建新的RBAC授权器
func (*RBACAuthorizer) AddPermissionToRole ¶ added in v0.1.1
func (a *RBACAuthorizer) AddPermissionToRole(role string, permission string) error
AddPermissionToRole 向角色添加权限
func (*RBACAuthorizer) AddRole ¶ added in v0.1.1
func (a *RBACAuthorizer) AddRole(role string, permissions []string)
AddRole 添加角色
func (*RBACAuthorizer) CheckPermission ¶ added in v0.1.1
func (a *RBACAuthorizer) CheckPermission(ctx context.Context, user *User, resource string, action string) (bool, error)
CheckPermission 检查用户是否有特定权限
func (*RBACAuthorizer) MapResourceAction ¶ added in v0.1.1
func (a *RBACAuthorizer) MapResourceAction(resource, action, permission string)
MapResourceAction 将资源和动作映射到权限
func (*RBACAuthorizer) RemovePermissionFromRole ¶ added in v0.1.1
func (a *RBACAuthorizer) RemovePermissionFromRole(role string, permission string) error
RemovePermissionFromRole 从角色中移除权限
func (*RBACAuthorizer) RemoveRole ¶ added in v0.1.1
func (a *RBACAuthorizer) RemoveRole(role string)
RemoveRole 删除角色
type ResourceAction ¶ added in v0.1.1
ResourceAction 表示资源和动作
type TokenExtractor ¶
TokenExtractor 定义令牌提取接口
type TokenInfo ¶ added in v0.1.1
type TokenInfo struct {
// 访问令牌 (用于验证用户身份)
AccessToken string
// 刷新令牌 (用于获取新的访问令牌)
RefreshToken string
// 访问令牌有效期
ExpiresAt time.Time
// 令牌类型
TokenType string
// 令牌作用域
Scope string
}
TokenInfo 表示令牌信息
type TokenManager ¶
type TokenManager interface {
// GenerateToken 生成令牌
GenerateToken(ctx context.Context, user *User, duration time.Duration) (*TokenInfo, error)
// ValidateToken 验证令牌
ValidateToken(ctx context.Context, token string) (*User, error)
// RefreshToken 刷新令牌
RefreshToken(ctx context.Context, refreshToken string) (*TokenInfo, error)
// RevokeToken 撤销令牌
RevokeToken(ctx context.Context, token string) error
}
TokenManager 定义令牌管理接口