javascript - 获取当前登录用户 - NestJS
问题描述
所以。我设置了一种DELETE
删除 Rent 的方法(Rent
当我在我的数据库中User
出租 an时会发生这种情况)。Item
我想确保检查唯一可以取消租金的用户是实际租用该项目的用户。我已经实施了一项检查,以防止用户从自己那里租用物品。
所以基本上在对表中的该行执行删除查询之前Rents
,我想检查当前登录用户的 ID 是否与Rents
表中该特定行的用户 ID 匹配,然后才会执行查询
userId 是User
租用者的 ID Item
(itemId)。
我设置了一个自定义GetUser()
装饰器
import { User } from './../entities/user.entity';
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
export const GetUser = createParamDecorator(
(data, ctx: ExecutionContext): User => {
const req = ctx.switchToHttp().getRequest();
return req.user;
},
);
现在,当我调用我的getMyItems
方法来获取当前用户拥有的所有项目时,GetUser()
装饰器工作正常,因为我可以访问请求对象上的用户。
GetMyItems 控制器
@Get('/my')
@ApiBearerAuth()
async getMyItems(@GetUser() user: User): Promise<Item[]> {
return this.itemsService.getMyItems(user);
}
当我尝试对上述cancelRent
方法做同样的事情时,即使一切都以相同的方式设置,它似乎也不起作用。
cancelRent 控制器
@Delete('/:id/cancel')
async cancelRent(
@Param('id') id: number,
@GetUser() user: User,
): Promise<void> {
return this.rentsService.cancelRent(id, user);
}
当我console.log(user)
在 cancelRent 控制器中运行时,我得到了undefined
,但是当我在 getMyItems 方法中运行它时,它通常会返回当前用户。是因为它是DELETE
请求而不是GET
请求吗?
解决方案
cancelRent()
不见了@ApiBearerAuth()
推荐阅读
- .htaccess - 如何从 .htaccess 文件重定向 URL
- node.js - 区分 nginx 服务器上的公用文件夹
- python - 如何将 Django 模型限制为单个一对一关系?
- python - 无法使用 selenium python 检索 web 表的所有 tr 元素
- database - 如何在flutter中实现新的数据库源
- math - 如何找到对象所有面后面的点的最简单方程?
- javascript - 在输入字符上使用 substr(0,3) 后,我在输出中看到第 4 个字符
- python - 使用元组作为索引来比较列表中的项目
- augmented-reality - 如何检查WebXR的命中测试结果中检测到的平面是否垂直?
- python - 从 influxdb 读取数据时丢失精度