问题标签 [nestjs-passport]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
passport.js - 无法读取未定义的“加密”属性
我正在尝试使用 Passportjs 和 NestJS(Fastify 作为底层 HTTP 框架)设置 google oauth2。我无法初始化谷歌身份验证屏幕,每次尝试时都会出现错误。我尝试了几种不同的方法来做到这一点,但是 AuthGuard 似乎存在问题,并且每次在这一步代码都会中断。我在这里共享一个控制器片段,它正在处理用于初始化身份验证屏幕的路由。
这是控制器:
谷歌战略:
该模块如下所示:
依赖项
nestjs - 来自谷歌的不记名令牌的nestjs无效算法错误
我正在尝试使用由 google oauth 生成的 jwt 来保护 nestjs api 项目。我让客户端代码正常工作,并使用 jwt.io 验证生成的 jwt 是正确的,并且使用我拥有的客户端密码验证正常。
我已按照nestjs 的指南实施护照和jwt auth 保护,但是当我将不记名令牌传递给带有保护的方法时,我得到的只是JsonWebTokenError: invalid algorithm
相关代码片段:
jwt.strategy.ts
jwt.auth-guard.ts
auth.module.ts
nestjs - 如何在嵌套js的装饰器上使用req.user获取用户数据
我创建了身份验证( jwt )并且该过程已正确完成。
我可以使用以下代码访问用户的信息,但是我无法使用装饰器获取用户的信息!
控制器 :
我的装饰器是:
我的代码问题是什么?
nestjs - NestJS 身份验证策略 - 它是如何访问的?
所以,我很困惑。我慢慢掌握了 NestJS,但它的passport
工作方式让我感到困惑。
我按照教程进行操作,一切正常。
我创建了一个 JWT 策略:
并定义了模块:
瞧,一个有效的令牌被发行了。我不明白的是如何passport
访问JwtStrategy
. 护照如何知道我的文件夹结构中有一个文件包含一个JwtStrategy
?
1.) 它不是由PassportModule
or注入的依赖项JWTModule
2.) 它不作为参数传递给任何方法
是否有一些幕后魔术可以查看所有提供者并确定它们中的任何一个是否是提供给的参数的子类PassportStrategy
?
typescript - 多个本地策略在 PassportStrategy 中不起作用
我正在使用 NestJS 框架。我有一个LocalStrategy
来验证用户。现在我想要另一个名为MylocalStrategy
. 为此,我添加了两个文件:mylocal.strategy.ts 和 mylocal-auth.guard.ts
这是我的mylocal-auth.guard.ts
内容:
但是当我使用@UseGuards(MylocalAuthGuard)
我得到错误:'Unknown authentication strategy "mylocal"'。
可能是什么问题呢?
typescript - 找不到模块“护照”或其相应的类型声明
我正在使用@nestjs/passport。运行后npm run start:dev
出现错误,但编辑器没有显示错误
输入代码:
知道问题可能是什么吗?
typescript - jwt 服务 this.jwtService.sign 不是函数
在 AuthService 中使用此代码:
在运行时编译后,我会收到以下错误:
[Nest] 12998 - 07/03/2020, 9:22:20 PM [ExceptionsHandler] this.jwtService.sign 不是函数 +213303ms
以下是 AuthModule:
任何想法如何解决?
我重新安装了 npm,删除了节点模块并尝试修改代码。但它仍然不起作用。
javascript - 如何解决 Nestjs 中的“策略#authenticate 必须被子类覆盖”错误
当我向 auth/login 发出 POST 请求时出现此错误
错误:必须由 LocalStrategy.Strategy.authenticate 的子类覆盖 Strategy#authenticate (/home/damy/Projects/snippets/Typescript/simple-crud-with-nest/node_modules/passport-strategy/lib/strategy.js:21: 9)尝试(/home/damy/Projects/snippets/Typescript/simple-crud-with-nest/node_modules/passport/lib/middleware/authenticate.js:366:16)在认证(/home/damy/Projects/片段/Typescript/simple-crud-with-nest/node_modules/passport/lib/middleware/authenticate.js:367:7) 在 /home/damy/Projects/snippets/Typescript/simple-crud-with-nest/node_modules/ @nestjs/passport/dist/auth.guard.js:87:3 at new Promise () at /home/damy/Projects/snippets/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/ auth.guard.js:79:83 在 MixinAuthGuard。(/home/damy/Projects/snippets/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:48:36) 在 Generator.next () 在 /home/damy /Projects/snippets/Typescript/simple-crud-with-nest/node_modules/@nestjs/passport/dist/auth.guard.js:20:71 at new Promise ()
这是我的本地策略代码 nestjs本地策略代码
node.js - 在没有 AuthGuard 的路由上获取 nestjs 中的当前用户
我使用带有 jwt 策略的带有护照的nestjs。我想在我的一些请求中获得当前用户。目前,我有一个看起来像这样的装饰器:
当我在带有 AuthGuard 的路线上使用它时,它按预期工作:
但是我如何使它在非保护路线上工作(获取当前用户)?我需要用户能够发表他们的评论,无论他们是否被授权,但是,当他们登录时,我需要得到他们的名字。
基本上,我需要一种方法来传播 req.user 在每个(或至少在一些不是 AuthGuard 的请求)上,通过应用护照中间件来表达真的很直接,但我不知道该怎么做它与@nestjs/passport。
[编辑] 感谢 vpdiongzon 为我指明了正确的方向,我根据他的回答选择了一个守卫,它只是用 user 或 null 填充 req.user:
现在我可以在任何需要获取当前用户的不受保护的路线上使用它
nestjs - Nest 无法解析 AuthService 的依赖关系
我正在关注此处提供的文档
https://docs.nestjs.com/techniques/authentication#jwt-functionality
为了获得更快的支持,我创建了一个有问题的 git 存储库
https://github.com/Sano123456/nestjs-jwt
第一个问题: 在 AuthModule 中,如果我按照文档中的说明进行操作并仅导入 UserModule,它会返回 UserModule 和 AuthModule 之间循环依赖的错误
错误:
AuthModule 的导入数组中的可能解决方案而不是 UserModule 提出了 Ref(() => UsersModule),这实际上消除了错误,但不确定这是否是正确的方法
第二个问题: 它说找不到 LocalStrategy 类,即使它存在并在 AuthModule 中声明
现在可能的解决方案我没有任何解决方案,我只是将其删除以了解问题所在
第三个问题:去掉LocalStrategy后,
有人解决了这个问题吗?