【问题标题】:How to verify laravel passport api token in node / socket application?如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?
【发布时间】:2018-10-26 02:36:09
【问题描述】:

我的问题是关于 laravel 应用程序中的 OAuth 护照令牌,它也使用套接字/节点快速服务器。

我需要在套接字服务器上实现我的身份验证机制。类似这篇文章的东西:https://m.dotdev.co/authenticate-laravel-5-user-account-in-nodejs-socket-io-using-json-web-tokens-jwt-f74009d612f8

我已经用我自己的令牌构建了这个机制。但我更愿意使用为我的 Laravel API 生成的令牌。

我的意思是这个令牌是如何构建的?有哪些用户字段以及需要哪些密钥来检查令牌在节点服务器端是否有效?这可能吗?

【问题讨论】:

  • 有什么解决办法吗?
  • @RameezRami 检查答案。

标签: node.js api jwt token laravel-passport


【解决方案1】:

我自己的解决方案是在 laravel 中为我的节点应用程序创建一个端点。

端点实际上负责从 Passport 验证我的 OAuth 令牌。在简单的例子中就是这样。

Route::get('/user', function(Request $request) {
    return Auth::user()->id;
})->middleware('auth:api');

在客户端应用程序连接到套接字服务器后,我必须发送我的令牌和 userId,然后调用 laravel 端点以通过 userId 验证我的令牌。当我的用户和令牌正常时,我授予收听频道的权限。

【讨论】:

  • 这将完成这项工作,但对于我正在处理的复杂且大型应用程序来说,它似乎不是一个优雅的解决方案。可能不适将我的 laravel 代码重写为 NodeJS。由于 laravel 和节点连接到同一个数据库,如果我提供 APP_KEY 或其他东西,有没有办法可以使用节点本身中的 Laravel 表来验证令牌?
【解决方案2】:

不要创建任何代理 api 回到 laravel 应用程序。

这是我的解决方案:

cat laravel_app/storage/oauth-public.key

节点

export class JwtStrategy extends PassportStrategy(Strategy) {
  constructor() {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      ignoreExpiration: false,
      secretOrKey: `-----BEGIN PUBLIC KEY-----
...............................
The content from: laravel_app/storage/oauth-public.key
...............................
-----END PUBLIC KEY-----`,
    });
  }
}

当然,您可以复制文件并从文件中读取,而不是传递原始字符串。

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 2023-04-03
    • 2020-11-12
    • 2013-09-24
    • 1970-01-01
    • 2013-06-28
    • 2017-03-24
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多