Documentation
¶
Index ¶
- Constants
- func GetCurrentAccountID(c *gin.Context) (string, bool)
- func GetCurrentSessionID(c *gin.Context) (string, bool)
- func GetCurrentUserID(c *gin.Context) (string, bool)
- func IsPlatformAdminRole(role string) bool
- func NormalizeRoleName(role string) string
- func OptionalAuth(tokenService token.TokenApplicationService) gin.HandlerFunc
- func RequireAuth(tokenService token.TokenApplicationService) gin.HandlerFunc
- func RequireSeedMockSecret(secret string) gin.HandlerFunc
- func TenantIDFromGin(c *gin.Context) string
- type CasbinEnforcer
- type JWTAuthMiddleware
- func (m *JWTAuthMiddleware) AuthOptional() gin.HandlerFunc
- func (m *JWTAuthMiddleware) AuthRequired() gin.HandlerFunc
- func (m *JWTAuthMiddleware) RequirePermission(resourceObj, action string) gin.HandlerFunc
- func (m *JWTAuthMiddleware) RequirePlatformAdmin() gin.HandlerFunc
- func (m *JWTAuthMiddleware) RequireRole(roleNames ...string) gin.HandlerFunc
- func (m *JWTAuthMiddleware) SupportsRoleCheck() bool
Constants ¶
const ( // ContextKeyUserID 当前认证用户的 ID ContextKeyUserID = "user_id" // ContextKeyAccountID 当前认证账户的 ID ContextKeyAccountID = "account_id" // ContextKeyTenantID 当前认证租户的 ID(Casbin domain) ContextKeyTenantID = "tenant_id" // ContextKeyTokenID 当前使用的 Token ID ContextKeyTokenID = "token_id" // ContextKeyClaims 当前认证请求的 Claims ContextKeyClaims = "claims" )
Context keys 用于在 Gin Context 中存储认证信息 使用常量可以避免字符串拼写错误,提高代码安全性
const ( PlatformAdminRoleSuperAdmin = "super_admin" PlatformAdminRolePlatformAdmin = "platform:admin" PlatformAdminRoleIAMAdmin = "iam:admin" )
const SeedMockSecretHeader = "X-IAM-Seed-Secret"
Variables ¶
This section is empty.
Functions ¶
func GetCurrentAccountID ¶
GetCurrentAccountID 从上下文获取当前账户 ID
func GetCurrentSessionID ¶
GetCurrentSessionID 从上下文获取当前会话 ID
func GetCurrentUserID ¶
GetCurrentUserID 从上下文获取当前用户 ID
func IsPlatformAdminRole ¶
IsPlatformAdminRole 判断角色是否属于平台控制面管理员。
func NormalizeRoleName ¶
NormalizeRoleName 将 Casbin `role:<name>` 规整为前端 / 业务层使用的角色名。
func OptionalAuth ¶
func OptionalAuth(tokenService token.TokenApplicationService) gin.HandlerFunc
OptionalAuth 便捷函数:创建可选认证中间件
func RequireAuth ¶
func RequireAuth(tokenService token.TokenApplicationService) gin.HandlerFunc
RequireAuth 便捷函数:创建认证必需中间件
func RequireSeedMockSecret ¶
func RequireSeedMockSecret(secret string) gin.HandlerFunc
func TenantIDFromGin ¶
TenantIDFromGin 从 gin 上下文解析租户域(Casbin domain),缺省为 tenant.DefaultID。
Types ¶
type CasbinEnforcer ¶
type CasbinEnforcer interface {
Enforce(ctx context.Context, sub, dom, obj, act string) (bool, error)
GetRolesForUser(ctx context.Context, user, domain string) ([]string, error)
}
CasbinEnforcer 可选注入的授权判定端口(由 authz Casbin 适配器实现)。 为 nil 时 RequireRole / RequirePermission 返回服务不可用。
type JWTAuthMiddleware ¶
type JWTAuthMiddleware struct {
// contains filtered or unexported fields
}
JWTAuthMiddleware JWT 认证中间件 使用新的认证模块来验证令牌
func NewJWTAuthMiddleware ¶
func NewJWTAuthMiddleware(tokenService token.TokenApplicationService, casbin CasbinEnforcer) *JWTAuthMiddleware
NewJWTAuthMiddleware 创建 JWT 认证中间件。 casbin 可为 nil(仅 JWT 校验,不做角色/权限判定)。
func (*JWTAuthMiddleware) AuthOptional ¶
func (m *JWTAuthMiddleware) AuthOptional() gin.HandlerFunc
AuthOptional 可选认证中间件 如果有令牌则验证,没有令牌也允许通过(但不设置用户信息)
func (*JWTAuthMiddleware) AuthRequired ¶
func (m *JWTAuthMiddleware) AuthRequired() gin.HandlerFunc
AuthRequired 认证必需中间件 验证请求中的 JWT 令牌,如果无效则返回 401
func (*JWTAuthMiddleware) RequirePermission ¶
func (m *JWTAuthMiddleware) RequirePermission(resourceObj, action string) gin.HandlerFunc
RequirePermission 对资源键与动作执行 Casbin Enforce(与 PDP 一致)。 必须在 AuthRequired 之后使用。
func (*JWTAuthMiddleware) RequirePlatformAdmin ¶
func (m *JWTAuthMiddleware) RequirePlatformAdmin() gin.HandlerFunc
RequirePlatformAdmin 要求用户在当前 domain 或 platform domain 中具备平台管理员角色。 必须在 AuthRequired 之后使用。
func (*JWTAuthMiddleware) RequireRole ¶
func (m *JWTAuthMiddleware) RequireRole(roleNames ...string) gin.HandlerFunc
RequireRole 要求用户拥有任一角色名(与 Casbin `role:<name>` 对齐,入参传 name 即可)。 必须在 AuthRequired 之后使用。
func (*JWTAuthMiddleware) SupportsRoleCheck ¶
func (m *JWTAuthMiddleware) SupportsRoleCheck() bool
SupportsRoleCheck 返回当前中间件是否具备角色判定能力。