typescript - nestjs中添加什么request.login

标签 typescript passport.js nestjs nestjs-passport

我有 Passport 本地守卫:

export class LocalGuard extends AuthGuard('local') {
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const result = (await super.canActivate(context)) as boolean;
    await super.logIn(context.switchToHttp().getRequest());
    return result;
  }
}

我为 google auth 实现了保护,例如:

export class GoogleAuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ){
    const req = context.switchToHttp().getRequest();
    // get access token from request...
    const user = // validate against google api 
    request.login(user, (err) => {});

    return true;
  }
}

我通过直接调用 google api 来验证访问 token 来实现保护,因为我发现 Passport 没有类似于验证访问 token 的东西。
使用 request.login() express-session 创建并存储在 redis 中,一切都很好。

我只是不明白这个 request.login() 是从哪里来的?

添加什么,passport(我在这个守卫里没用),nestjs或者session-express。

最佳答案

passport是什么将 login() 方法添加到请求对象。不管你用不在guard里面,request对象还是被passport修改过的,所以才有这个login方法。它用于使用您选择的 session 存储创建 session 。 I've got a decent write-up of the integration between Nest, passport, and how to create a session based authentication system on dev.to这可能有助于阐明 NestJS 和 Passport 的幕后情况。

关于typescript - nestjs中添加什么request.login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70507226/

相关文章:

node.js - typescript /Node 意外 token *

javascript - 无法使用 Angular 6将图像下载为zip文件

node.js - Facebook Node Passport 不返回电子邮件地址

typescript - 在 nest.js 中处理第三方依赖项

typescript - 如何删除 Ionic 2 中除登录 View 之外的所有 View ?

typescript - 为什么正确结构的 Typescript 数组不能分配给看似兼容的元组

javascript - Passport -推特策略问题

node.js - nodejs + passport + express 3.0 + connect-flash 不闪烁?

jestjs - 当我尝试使用 NestJS、Jest 和 GraphQLFederationModule 进行测试时出错

javascript - 开 Jest : Cannot spy the property because it is not a function; undefined given instead getting error while executing my test cases