【问题标题】:Rails Devise auth for browser and mobile appRails 为浏览器和移动应用程序设计身份验证
【发布时间】:2013-03-16 09:11:48
【问题描述】:

我有一个可以从浏览器和移动设备访问的 rails 应用程序。我正在使用 Devise 进行身份验证,我正在对移动设备使用令牌身份验证。

我在从移动应用登录时获得身份验证令牌,并在每次通过移动设备拨打电话时使用它。

在浏览器上,我使用的是基于会话的 cookie。因此,碰巧两个人可以从浏览器和移动应用程序使用相同的用户名/密码同时登录,这会导致数据损坏。

我该如何解决这个问题?如果我也可以在每次从浏览器调用时发送相同的 auth_token,那么这个问题将得到解决,因为最后登录的 auth_token 将优先于另一个。

关于如何从浏览器中为所有调用(get/post/put/delete)发送此身份验证令牌的任何线索?

我没有使用 jQuery 或来自浏览器的任何 Ajax 调用。

谢谢

【问题讨论】:

  • 我想你的意思是“一个人可以从浏览器和移动应用程序登录”,否则你就会遇到安全问题。
  • 是的。同一个人可以从浏览器和移动应用程序登录,并从其中一个继续编辑,而无需从另一个注销。
  • 这与同时从两个不同的浏览器登录有何不同?
  • @rossta 这并没有太大的不同......但让我备份一下......登录不是每个人,而是每个帐户登录。并且这些人可以从浏览器或移动设备登录。理想情况下,如果我只对两种媒介都使用令牌身份验证,那么无论谁最后登录,他的令牌都是最新的,而另一个人将无法使用他的陈旧令牌进行任何交易。

标签: ruby-on-rails authentication devise


【解决方案1】:

您必须将设计配置为对每个请求使用无状态令牌。

config.skip_session_storage = [:token_auth]

如果您还没有,请查看token authenticable 文档。那里定义了一些方法来确保令牌有效,如果无效则重新生成。我不确定在浏览器中使用它是否明智,但如果用户登录浏览器,您肯定可以使移动应用的令牌过期,这将迫使他们在移动应用上重新进行身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2011-10-27
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多