作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Nest 版本 ^6.7.2
我正在尝试创建一个从请求中获取 req.user 值的 createParamDecorator。
在 createParamDecorator 内部, req.user 有一个值,但是当我尝试使用装饰器在 Controller 中获取该值时,该值是未定义的。
const AuthSession = createParamDecorator((data, req) => {
console.log(req.user); // session data
return req.user;
});
Controller()
export default class AuthController {
@Get("/token/ping")
@UseGuards(AuthGuard("jwt"))
tokenPing(@AuthSession() session: Session) {
console.log(session); // undefined
return session;
}
}
编辑:我刚刚尝试更新到nestjs v7,我遇到了同样的问题
import { createParamDecorator, ExecutionContext } from "@nestjs/common";
const AuthSession = createParamDecorator((data: any, ctx: ExecutionContext) => {
return { message: "asdf" };
});
export default AuthSession;
@Controller()
export default class AuthController {
@Get("/token/ping")
@UseGuards(AuthGuard("jwt"))
tokenPing(@AuthSession() session: Session) {
console.log(session); // undefined
return session;
}
}
最佳答案
您可以从 ExecutionContext 获取信息:
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.user;
},
);
检查文档中的示例:
Custom decorator
关于javascript - NestJS createParamDecorator 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65028137/
我正在使用 Nest 版本 ^6.7.2 我正在尝试创建一个从请求中获取 req.user 值的 createParamDecorator。 在 createParamDecorator 内部, re
我是一名优秀的程序员,十分优秀!