如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

     2023-03-10     33

关键词:

【中文标题】如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?【英文标题】:How to verify laravel passport api token in node / socket application? 【发布时间】: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 检查答案。 【参考方案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-----`,
    );
  

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

【讨论】:

在以下场景中,如何确保用户在 Laravel 中发布文章之前经过身份验证?

...问题描述】:我正在Laravel5.1中开发一个简单的网络博客应用程序。该应用程序包含两个控制器,一个UsersController和 查看详情

如何在移动应用程序的 Web 服务中使用 Laravel 5.4 验证器

】如何在移动应用程序的Web服务中使用Laravel5.4验证器【英文标题】:HowtouseLaravel5.4validatoratwebserviceformobileapplication【发布时间】:2017-09-2002:37:55【问题描述】:我在使用Laravel5.4验证器时遇到问题,我正在尝试验证来自移动应用... 查看详情

如何在 Laravel 5 中验证 RESTful API?

...正在使用Laravel5构建一个RESTfulAPI,我想将这些API用于移动应用程序。我也见过http://laravel.com/docs/5.0/authentication但没有得到任何相关示例,请提供示例示例或适当的链接以 查看详情

如何在 PHP (Laravel) 中验证请求的源域

...】:2020-10-1819:11:32【问题描述】:我正在开发一个Laravel应用程序,我正在为其他网站构建一些API。但我试图让我的API的实现尽可能简单。我的期望是用户只会在HTML头中使用这个标签:<scriptsrc="api.mydomain.co 查看详情

如何在 socket.io 服务器中调用节点 api 响应

...一个节点API,并创建了一个套接字服务器,我尝试使用该应用程序。问 查看详情

如何在 Laravel 中为 REST API 创建身份验证

...Laravel在内核中有一些基本的身份验证,它是桌面/浏览器应用程序的重要安全层,但对于主要用于移动设 查看详情

如何在 Laravel 中验证数组?

】如何在Laravel中验证数组?【英文标题】:HowtovalidatearrayinLaravel?【发布时间】:2017-07-0415:12:31【问题描述】:我尝试在Laravel中验证数组POST:$validator=Validator::make($request->all(),["name.*"=>\'required|distinct|min:3\',"amount.*"=>\'required... 查看详情

如何在 Laravel 5 中验证模型?

】如何在Laravel5中验证模型?【英文标题】:HowtovalidateinmodelinLaravel5?【发布时间】:2015-12-1205:53:09【问题描述】:我是Laravel的新手。现在我开始使用Laravel5开发一个项目。我之前一直在使用CodeIgniter。我遇到了与我想做的不兼容... 查看详情

Vuejs如何显示laravel输入数组验证错误

...间】:2020-02-1007:23:15【问题描述】:我无法在我的Laravel应用程序中检索到的vue组件中显示错误消息。这是网络标签中的响应message:"Thegivendatawasinvalid.",…errors:results.0.winner:[" 查看详情

如何在 laravel 中验证递归对象

】如何在laravel中验证递归对象【英文标题】:Howtovalidaterecursionobjectsinlaravel【发布时间】:2020-03-2222:27:48【问题描述】:如何在Laravel5+中验证递归嵌套对象我有公司的平衡结构。有规律<row>:namedigitrows:[<row>]json结构示例"b... 查看详情

如何在 laravel 中验证多行表单

】如何在laravel中验证多行表单【英文标题】:Howtovalidatemulti-rowformsinlaravel【发布时间】:2012-11-2019:20:01【问题描述】:是否可以在laravel中验证多行表单。我想验证一个如下所示的表单:<inputname="address[]"class="addr"/><inputname... 查看详情

如何在 Laravel 刀片中的反应组件中获取 Laravel 验证错误

】如何在Laravel刀片中的反应组件中获取Laravel验证错误【英文标题】:HowtogetLaravelvalidationerrorsinreactcomponentwhichisinLaravelblade【发布时间】:2020-03-2514:42:38【问题描述】:我是React新手。我在Laravel刀片中使用了反应表单组件部分。... 查看详情

如何在 laravel 验证中验证多个电子邮件?

】如何在laravel验证中验证多个电子邮件?【英文标题】:Howtovalidatemultipleemailinlaravelvalidation?【发布时间】:2015-06-0921:04:38【问题描述】:我已经为laravel中的变量验证做了所有事情,但对于电子邮件我遇到了一个简单的问题。来... 查看详情

如何根据输入请求规则在 laravel 刀片中显示错误消息

...布时间】:2017-10-1118:58:40【问题描述】:在我的laravel5.4应用程序中,我有一个基本的输入表单,其中包含password和password_confirmation字段。表单使用laravel表单请求验证进行验证。用 查看详情

我如何在 laravel 中使用节点模块?

】我如何在laravel中使用节点模块?【英文标题】:HowIusenodemodulesinlaravel?【发布时间】:2016-12-2821:27:54【问题描述】:在我的资源/资产/js中我有tests.js,我使用gulp从js构建所有文件,包括这个文件,在这个文件中我有varcmd=require(\... 查看详情

如何在 laravel 验证中排除规则

】如何在laravel验证中排除规则【英文标题】:howtoexcludearuleinlaravelvalidation【发布时间】:2021-11-2512:08:39【问题描述】:我正在使用表单请求验证在仪表板内构建用户的辞职信。它在存储资源中运行良好,但我需要在更新资源时... 查看详情

如何在 Laravel 5.1 中强制 FormRequest 返回 json?

...问题描述】:我正在使用FormRequest来验证从我的智能手机应用程序的API调用中发送的内容。所以,我希望FormRequest在验证失败时总是返回json。看到下面Laravel框架的源码,FormReques 查看详情

在节点js中使用套接字连接事件

...、server.js和client.js。我创建了一个套接字来实时运行我的应用程序,即在用户输入的id="add"的div标签中显示消息。用户在id="element"的输​​入字段中输入 查看详情