Rya*_*anB 1 ruby activerecord ruby-on-rails devise rails-postgresql
我有一个 Rails 应用程序,用户在其中注册了一个帐户,并为他们创建了一个子域。然后他们可以进入子域并使用他们的凭据登录。工作流程如下所示:
(注意:为了实现单独的“数据库”,我使用的是 postgres 模式,但这应该无关紧要。)
我的问题涉及到第3步。我想将用户重定向到他们的子域名和记录它们自动而不是要求他们登录的。不过,我不希望在所有子域共享一个会话。
我想以某种方式安全地传输自动登录请求。
我曾考虑使用一次性随机令牌,将其存储在 cookie 和users表中。用户成功创建帐户后,他将被重定向到子域。届时,令牌将被消耗/销毁,用户将自动登录。
我还需要有一个较短的窗口,以便在到期前使用令牌。
想法?谢谢!
小智 5
我遇到了同样的问题,您建议的可能解决方案不起作用,因为会话未在子域之间共享。
我通过以下方式解决了它(您提出的想法相同,实现方式不同):
使用提供的密钥自动登录用户:
key = LoginKey.find_by_login_key(params[:key])
sign_in(key.user) 除非 key.nil?
销毁密钥:
key.destroy
我 100% 不喜欢这个解决方案,我尝试了很多不需要创建数据库记录的不同方法,但总是面临安全问题,我认为这个方法是安全的。
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |