Nestjs 如何在具有嵌套会话的保护中使用会话对象
在NestJS中,使用Nestjs 如何在具有嵌套会话的保护中使用会话对象,nestjs,Nestjs,在NestJS中,使用nest session,我想在一个保护中使用session对象(CanActivate) 在控制器的操作中,这是通过使用@Session()完成的但我找不到也不知道如何使用保护获取这些数据。首先,创建一个包含会话对象并扩展express Request对象的接口,因为会话对象是nestjs创建的字段,在请求对象上不存在 从“express”导入{Request}; 导出接口IRequest扩展请求{ 届会:任何; } 然后,您必须导入接口,创建此类型的变量,然后使用执行
nest session
,我想在一个保护中使用session对象(CanActivate
)
在控制器的操作中,这是通过使用
@Session()完成的
但我找不到也不知道如何使用保护获取这些数据。首先,创建一个包含会话对象并扩展express Request对象的接口,因为会话对象是nestjs创建的字段,在请求对象上不存在
从“express”导入{Request};
导出接口IRequest扩展请求{
届会:任何;
}
然后,您必须导入接口,创建此类型的变量,然后使用执行上下文获取请求,就是说,req变量包含请求对象,您可以使用req.session获取会话对象
从'@nestjs/common'导入{Injectable,CanActivate,ExecutionContext};
从“/app.interface”导入{IRequest}//导入接口
@可注射()
导出类Guard实现CanActivate{
构造函数(){}
canActivate(上下文:ExecutionContext):布尔值{
const-req:IRequest=context.switchToHttp().getRequest();//请求对象
const session=req.session;//会话对象
/*
你想在这里做什么就做什么。。。
*/
返回true;
}
}
您可以在此处找到有关请求对象的更多信息:
谢谢,效果很好!我必须更改类型以保留
session
的原始属性:export-type-IRequest=Request&{session:any}代码>。(显然我没有使用任何)