rbac

package
v1.67.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 18, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package rbac 提供角色权限访问控制(RBAC)判定层。 与 JWT scope 粗粒度互补:scope 控制「API 组访问」,rbac 控制「业务操作粒度」。 用法:业务实现 Provider(从 DB/Redis 加载用户角色与权限点), Enforcer 带缓存判定;Web 层用 RequirePermission/RequireRole 声明式拦截。

Index

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

func NewEnforcer(provider Provider) *Enforcer

NewEnforcer 创建判定器;provider 为 nil 时所有判定返回错误。

func (*Enforcer) ClearCache

func (e *Enforcer) ClearCache(userID int64)

ClearCache 清除指定用户权限缓存(角色变更后调用)。

func (*Enforcer) HasAnyPermission

func (e *Enforcer) HasAnyPermission(ctx context.Context, userID int64, permissions ...string) (bool, error)

HasAnyPermission 判断用户是否拥有任一权限点。

func (*Enforcer) HasAnyRole

func (e *Enforcer) HasAnyRole(ctx context.Context, userID int64, roles ...string) (bool, error)

HasAnyRole 判断用户是否拥有任一角色。

func (*Enforcer) HasPermission

func (e *Enforcer) HasPermission(ctx context.Context, userID int64, permission string) (bool, error)

HasPermission 判断用户是否拥有指定权限点。

func (*Enforcer) HasRole

func (e *Enforcer) HasRole(ctx context.Context, userID int64, role string) (bool, error)

HasRole 判断用户是否拥有指定角色。

func (*Enforcer) Permissions

func (e *Enforcer) Permissions(ctx context.Context, userID int64) ([]string, error)

Permissions 返回用户权限点(带缓存)。

func (*Enforcer) RequirePermission

func (e *Enforcer) RequirePermission(permissions ...string) iris.Handler

RequirePermission 返回中间件:用户缺少全部指定权限时 403(A0312)。 依赖 web.Auth 已写入 user_id;未认证时由 Auth 先行拦截。

func (*Enforcer) RequireRole

func (e *Enforcer) RequireRole(roles ...string) iris.Handler

RequireRole 返回中间件:用户缺少全部指定角色时 403(A0312)。

func (*Enforcer) WithTTL

func (e *Enforcer) WithTTL(ttl time.Duration) *Enforcer

WithTTL 设置权限缓存时间(默认 60 秒;非正数禁用缓存)。

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")。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL