Documentation
¶
Overview ¶
Package rbac 提供角色权限访问控制(RBAC)判定层。 与 JWT scope 粗粒度互补:scope 控制「API 组访问」,rbac 控制「业务操作粒度」。 用法:业务实现 Provider(从 DB/Redis 加载用户角色与权限点), Enforcer 带缓存判定;Web 层用 RequirePermission/RequireRole 声明式拦截。
Index ¶
- type Enforcer
- func (e *Enforcer) ClearCache(userID int64)
- func (e *Enforcer) HasAnyPermission(ctx context.Context, userID int64, permissions ...string) (bool, error)
- func (e *Enforcer) HasAnyRole(ctx context.Context, userID int64, roles ...string) (bool, error)
- func (e *Enforcer) HasPermission(ctx context.Context, userID int64, permission string) (bool, error)
- func (e *Enforcer) HasRole(ctx context.Context, userID int64, role string) (bool, error)
- func (e *Enforcer) Permissions(ctx context.Context, userID int64) ([]string, error)
- func (e *Enforcer) RequirePermission(permissions ...string) iris.Handler
- func (e *Enforcer) RequireRole(roles ...string) iris.Handler
- func (e *Enforcer) WithTTL(ttl time.Duration) *Enforcer
- type Provider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Enforcer ¶
type Enforcer struct {
// contains filtered or unexported fields
}
Enforcer 是带内存缓存的权限判定器。
func NewEnforcer ¶
NewEnforcer 创建判定器;provider 为 nil 时所有判定返回错误。
func (*Enforcer) ClearCache ¶
ClearCache 清除指定用户权限缓存(角色变更后调用)。
func (*Enforcer) HasAnyPermission ¶
func (e *Enforcer) HasAnyPermission(ctx context.Context, userID int64, permissions ...string) (bool, error)
HasAnyPermission 判断用户是否拥有任一权限点。
func (*Enforcer) HasAnyRole ¶
HasAnyRole 判断用户是否拥有任一角色。
func (*Enforcer) HasPermission ¶
func (e *Enforcer) HasPermission(ctx context.Context, userID int64, permission string) (bool, error)
HasPermission 判断用户是否拥有指定权限点。
func (*Enforcer) Permissions ¶
Permissions 返回用户权限点(带缓存)。
func (*Enforcer) RequirePermission ¶
RequirePermission 返回中间件:用户缺少全部指定权限时 403(A0312)。 依赖 web.Auth 已写入 user_id;未认证时由 Auth 先行拦截。
func (*Enforcer) RequireRole ¶
RequireRole 返回中间件:用户缺少全部指定角色时 403(A0312)。
type Provider ¶
type Provider interface {
Permissions(ctx context.Context, userID int64) ([]string, error)
Roles(ctx context.Context, userID int64) ([]string, error)
}
Provider 是权限数据源抽象,业务实现(通常查询数据库): Permissions 返回用户全部权限点(如 "order:create"、"user:delete"),合并其所有角色; Roles 返回用户角色列表(如 "admin"、"operator")。