gpt4 book ai didi

nestjs - 如何在带有嵌套 session 的守卫中使用 session 对象

转载 作者:行者123 更新时间:2023-12-04 02:30:48 34 4
gpt4 key购买 nike

在 NestJS 中,使用 nest-session,我想在守卫 (CanActivate) 中使用 session 对象。

在 Controller 的操作中,这是通过使用 @Session() 完成的,但我找不到也不知道如何使用守卫获取这些数据。

最佳答案

首先创建一个包含session对象的Interface,并扩展express Request对象,因为session对象是nestjs创建的一个字段,不存在于Request对象上。

import { Request } from 'express';
export interface IRequest extends Request {
session: any;
}

然后小心点,你必须导入接口(interface),创建一个这种类型的变量,然后使用执行上下文来获取请求,仅此而已,req 变量包含 Request 对象,你可以使用 req.session 来获取 session 对象。

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { IRequest } from './app.interface'; //Import interface

@Injectable()
export class Guard implements CanActivate {
constructor() {}
canActivate(context: ExecutionContext): boolean {
const req: IRequest = context.switchToHttp().getRequest(); //Request Object
const session = req.session; //Session Object
/*
Do whatever you want with your session here ...
*/
return true;
}
}

您可以在此处找到有关 Request 对象的更多信息: https://docs.nestjs.com/controllers#request-object https://expressjs.com/en/api.html#req

关于nestjs - 如何在带有嵌套 session 的守卫中使用 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64298963/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com