nestjs - ExecuteContext 无法获取类 RoleGuard 中的用户
问题描述
import { ROLES_KEY } from './role.decorator';
import { UserRole } from '../users/role.enum';
import { CanActivate, Injectable, ExecutionContext } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
const requiredRole = this.reflector.getAllAndOverride<UserRole[]>(
ROLES_KEY,
[context.getClass(), context.getHandler()],
);
if (!requiredRole) {
return true
}
const req = context.switchToHttp().getRequest();
const user = req.user;
console.log('Before');
console.log(user)
return requiredRole.some((role) => {
if(role==="ADMIN"){
console.log("True")
}
return role === 'ADMIN'
});
}
}
return role==="ADMIN" 然后用户可以登录后的原因,但是我怎样才能在 return role==="ADMIN execute 之前获取用户?我只能在 role==="ADMIN" 返回后才能获取用户我使用嵌套js 在 RoleGuard 上工作
解决方案
推荐阅读
- python - 继续获取 for 循环中的最后一个值
- c++ - 如何在 C++ 中定义具有“n”行和“m”列的多维数组并使用 For 循环迭代值?
- javascript - 如何解决referenceerror模块未定义
- python - 在 Python 中比较没有日期的两次?
- angular - 以高角度导出带有所有工具提示的图像
- django - 继承django表单字段的正确方法
- arrays - 如何在numpy中创建一个连续数字数组?
- javascript - 破坏函数Javascript的最佳方法
- wordpress - 如何使用 WordPress WP-Bakery 中的单个模板或多个页面的任何插件制作城市页面?
- python - 为什么尝试/异常方法不适用于我的 python?