// +---------------------------------------------------------------------- namespace app\adminapi\middleware; use app\http\middleware\BaseAuthTokenMiddleware; use app\services\system\admin\AdminAuthServices; use think\Request; /** * 后台管理员认证中间件(令牌提取/校验骨架见 BaseAuthTokenMiddleware) * Class AdminAuthTokenMiddleware * @package app\adminapi\middleware */ class AdminAuthTokenMiddleware extends BaseAuthTokenMiddleware { /** * 后台认证服务 * @return string */ protected function authService(): string { return AdminAuthServices::class; } /** * 绑定管理员身份宏(isAdminLogin/adminId/adminInfo),后台无游客态 * @param Request $request 请求对象 * @param mixed $authInfo 认证结果,游客态为 null * @return void */ protected function bindIdentity(Request $request, $authInfo): void { // 后台不存在游客态,认证失败已在骨架 deny 阶段拦截,null 时不注入身份宏 if (is_null($authInfo)) { return; } $adminInfo = $authInfo; $request->macro('isAdminLogin', function () use (&$adminInfo) { return !is_null($adminInfo); }); $request->macro('adminId', function () use (&$adminInfo) { return $adminInfo['id']; }); $request->macro('adminInfo', function () use (&$adminInfo) { return $adminInfo; }); } }