在 Rails API + React 客户端中实现用户模拟

Implementing user impersonation in Rails API + React client

提问人:Oleksii Filonenko 提问时间:8/6/2019 更新时间:2/9/2023 访问量:1563

问:

所以,我找到了伪装者、user_impersonate2switch_user等宝石。它们似乎都实现了类似的目标——切换到像 Devise 这样的系统,切换到“单体”Rails 应用程序。current_user

我有一个 React 客户端与一个 Rails 应用程序交谈。管理页面直接在 Rails 中实现(它是一个视图),客户端是分开的。目前,客户端向提供 via devise-jwt 的 Devise 路由发出 POST 请求,并将令牌保存在浏览器的 .access_tokenlocalstorage

有没有推荐的方法来允许管理员以用户身份登录并从管理员(Rails)页面重定向到客户端(React)页面?最好对前端代码进行最少的更改,但我可以这样做。

我考虑过通过共享根域共享 cookie,但这对我来说有安全问题的味道。

我不确定如何让客户端应用程序“侦听”在 Rails 应用程序中所做的令牌更改,或者从客户端的角度更改当前用户的任何类似方式。

Ruby-on-Rails Ruby 设计 客户端-服务器 模拟

评论

3赞 zauzaj 8/18/2020
嗨,我知道已经有一段时间了,但您是否设法实现了此功能?您是否尝试过上面列出的任何宝石?
0赞 Kevin Maze 9/9/2022
我不知道您的令牌过期策略是什么样的,但是是否可以将用户的 JWT 提供给管理页面,并在前端有一些 JS 简单地发出 HTTP 1.1 请求或类似的东西?这真的只取决于令牌的到期时间——除非我遗漏了什么。Set-Cookie: foo_bar
0赞 kwerle 7/9/2023
你真的不谈论你想要的行为。或者至少我不明白。用户是否打开了 2 个窗口?您希望在管理视图更改用户时更改客户端视图?或者,您是否希望在管理页面上的用户在选择新用户时被重定向到客户端页面?或者您希望它在他们选择新用户时打开一个新窗口?您希望用户仅停留在该窗口或所有窗口?所需的行为可能会影响实现。

答: 暂无答案