BaaS Auth 模块
认证授权模块 - JWT Token 管理和统一权限检查。
📦 模块信息
- 依赖: Drupal Core
- 位置:
web/modules/custom/baas_auth/
🏗️ 核心功能
JWT 认证
- Token 生成和验证
- Token 刷新机制
- 自动过期管理
统一权限
- 项目级权限检查
- 租户级权限检查
- 角色权限管理
🔧 主要类和方法
JwtAuthService
JWT 认证服务 - src/Service/JwtAuthService.php
// 生成 JWT Token
public function generateToken(int $user_id, array $claims = []): string
// 验证 Token
public function validateToken(string $token): array|false
// 刷新 Token
public function refreshToken(string $refresh_token): string
// 解析 Token
public function parseToken(string $token): arrayUnifiedPermissionChecker
统一权限检查 - src/Service/UnifiedPermissionChecker.php
// 检查项目访问权限
public function canAccessProject(int $user_id, string $project_id): bool
// 检查项目编辑权限
public function canEditProject(int $user_id, string $project_id): bool
// 检查租户访问权限
public function canAccessTenant(int $user_id, string $tenant_id): bool
// 获取用户角色
public function getUserProjectRole(int $user_id, string $project_id): ?stringAuthApiController
认证 API 控制器 - src/Controller/AuthApiController.php
// POST /api/auth/login
public function login(Request $request): JsonResponse
// POST /api/auth/refresh
public function refresh(Request $request): JsonResponse
// GET /api/auth/me
public function me(Request $request): JsonResponse📖 使用示例
生成 JWT Token
$jwt_service = \Drupal::service('baas_auth.jwt');
$token = $jwt_service->generateToken($user_id, [
'tenant_id' => 'tenant_7375b0cd',
'project_id' => 'tenant_7375b0cd_project_6888d012be80c',
]);权限检查
$permission_checker = \Drupal::service('baas_auth.unified_permission_checker');
if ($permission_checker->canEditProject($user_id, $project_id)) {
// 用户有编辑权限
}🔌 服务注册
baas_auth.services.yml:
services:
baas_auth.jwt:
class: Drupal\baas_auth\Service\JwtAuthService
arguments:
- '@config.factory'
- '@datetime.time'
baas_auth.unified_permission_checker:
class: Drupal\baas_auth\Service\UnifiedPermissionChecker
arguments:
- '@database'
- '@entity_type.manager'🔗 相关文档
Last updated on