当前位置: 首页 > 面试题库 >

Nest.js中具有@ nestjs / passport的可选身份验证

岳玉堂
2023-03-14
问题内容

我有一条路由,需要经过身份验证和未经身份验证的用户使用。我@UseGuards(AuthGuard('jwt'))用来启用身份验证,但是它可以防止任何未经身份验证的用户访问路由(正常)。

如何允许未经身份验证的用户也访问路由?

似乎没有可以传递给AuthGuard我的护照策略中的选项。


问题答案:

您可以AuthGuard通过扩展现有实例来创建自己的实例:

export class OptionalJwtAuthGuard extends AuthGuard('jwt') {

  // Override handleRequest so it never throws an error
  handleRequest(err, user, info, context) {
    return user;
  }

}

然后在您的控制器上使用此代码:

@UseGuards(OptionalJwtAuthGuard)


 类似资料:
  • 我是新的(护照)在laravel。是否有可能使用 即使使用了laravel内置身份验证?

  • 问题内容: 我一直在玩漂亮的汤和解析网页几天。在编写的所有脚本中,我一直使用一行代码作为救星。代码行是: 但是… 我想对(OPEN A URL WITH AUTHENTICATION)做同样的事情: 我无法打开网址并阅读需要身份验证的网页。我如何实现这样的目标: 问题答案: 看看官方文档中的如何使用urllib软件包获取Internet资源:

  • 我正在尝试使用passport ldapauth npm验证openLDAP用户名和密码。在执行下面的代码时,我总是收到错误消息:“缺少凭据”。请帮助我我的代码有什么问题。 有关更多详细信息,请参阅此badRequestMessage flash消息以查找缺少的用户名/密码(默认值:“缺少凭据”)

  • 我正在尝试使用Keycloak配置Spring Boot应用程序以使其具有可供经过身份验证和未经身份验证的用户访问的endpoint。对于经过身份验证的用户,我想返回一些额外信息。这是我试图实现的一个简单示例: application.properties: 到目前为止,我只对这两种情况中的一种起作用。如果我使用上面的安全约束保护endpoint,那么只有经过身份验证的用户才能访问该endpoin

  • 我正在尝试创建一个服务来验证Angular2中的用户名和密码。下面是authentication.service.ts的代码 这是我使用slim框架的index.php 我的问题是我无法从容器['jwt']获取令牌。如果我给出了不正确的用户名和密码,那么令牌将保持为NULL。但如果我给出正确的用户名和密码。$result变量为我提供数据库中的数据。我可以验证密码。但是$request->getAt

  • 我正在用java编写一个必须在我的工作环境中运行的程序。这是我的代码片段: 在我的家庭网络上,这工作得非常好,但在商业网络上,我会遇到以下错误: onnection.getSocketException:软件导致连接中止:recv在java.net.SocketInputSonquerer.runRead0(本机方法)在onquerer.java:44SocketInputStream.read(