是否可以使用 API 令牌在 laravel 中进行用户模拟?

Posted

技术标签:

【中文标题】是否可以使用 API 令牌在 laravel 中进行用户模拟?【英文标题】:Is it possible to do user impersonation in laravel using API Tokens? 【发布时间】:2019-04-30 00:40:29 【问题描述】:

这个插件工作正常https://github.com/404labfr/laravel-impersonate 但我正在开发一个执行 RESTful API 的 Web 应用程序。 API 通常使用令牌来验证用户身份,并且不维护请求之间的会话状态。

larave-impersonation 插件https://github.com/404labfr/laravel-impersonate 是基于会话的,可以在属于 web 中间件组的路由/控制器中完成。这是因为 API 路由是无状态的,它们使用 API 令牌而不是用于身份验证和授权的会话。所以基本上我不能使用这个方便的插件:(

有没有办法使用 API 令牌执行用户模拟?

用户模拟功能具有模拟其他用户的能力。作为管理员,您可以像以其他用户身份登录一样查看所有屏幕。这使您可以轻松发现用户可能报告的问题。

【问题讨论】:

【参考方案1】:

为什么不直接为所选用户手动生成令牌并以他们的身份实际发出请求?设置一个单独的客户端(假设您使用的是 oAuth/Passport)并将该客户端用作您的“模仿者”。如果您正在审核请求,您可以设置一个数据库标志来表明请求是模拟的。

【讨论】:

非常感谢您的回复。对此,我真的非常感激。 :) 不幸的是,我仍然对如何应用它感到困惑。我应该阅读更多关于 oAuth 的信息。但是我可以谦虚地要求只提供一段代码或只是一个关于如何实际操作的参考链接吗? @J.I.S 这是一个超级迟到的响应,但我所做的是根据乔的回答创建了一个中间件,该中间件根据模拟用户修改了授权令牌标头。希望它对采用这种方法的人有所帮助。

以上是关于是否可以使用 API 令牌在 laravel 中进行用户模拟?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问输入的令牌值 - Laravel API

是否可以使用随机令牌保护 json api 抓取?

如何将自定义数据添加到 Laravel Passport API 令牌?

laravel passport是否在承载令牌中序列化整个用户对象?

laravel 自己的 api 使用来自具有承载令牌的控制器

混淆 Laravel 护照 API 安全性的工作原理