iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么?

标签 iphone ruby-on-rails ruby restful-authentication

我正在构建一个与 Ruby on Rails 后端对话的 iPhone 应用程序。 Ruby on Rails 应用程序还将为 Web 用户提供服务。 restful_authentication 插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望 iPhone 应用程序的用户在新列中存储一个由手机的唯一标识符 ([[UIDevice device] uniqueIdentifier]) 自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone 唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用 iPhone 应用程序,因为该应用程序可以使用它的标识符对自己进行身份验证。

修改 restful_authentication 以执行此操作的最佳方法是什么?创建插件?还是修改生成的代码?

其他框架怎么样,例如 AuthLogic。让 iPhone 将生成的身份验证 token 锁定到其 UUID,然后让用户稍后创建用户名/密码的最佳方法是什么?

最佳答案

我认为您不应该单独使用手机标识符进行身份验证,因为它不是 secret ,而且可能也是可猜测/可预测的。不要忘记,如果有人想破解您的网络应用程序,他们不必使用您的代码 - 他们只需猜测设备 ID 并尝试使用任何网络客户端篡改您的用户数据。

您应该将设备 ID 视为类似于用户名 - 它用于识别而非身份验证。我建议您让用户选择一个密码,或者更好地自动生成一个随机代码,以配合它 - 然后发送设备 ID +此密码/代码首先注册设备,然后对设备进行身份验证。

您还可以打赌,某些用户将拥有不止一台设备 - 或者他们最终会更换一台,或者您会遇到像 Stephen Fry 这样使用 4 部 iPhone 的人。为了解决这个问题,我建议你寻找一种方法来实例化 restful_authentication 两次,一次用于验证用户,第二次用于验证设备。我没有使用过这个插件,但我希望你只需要使用不同的表参数来实现这一点。然后在您的应用程序逻辑中允许用户将多个设备与其帐户相关联。

要安全地做到这一点,要么从设备上执行此操作,要么让设备显示一个随机代码,然后他们将其输入网络应用程序以证明他们拥有该设备(这听起来比实际更痛苦 - 这是相同的过程苹果在 iTunes、Apple TV 和远程应用程序中使用的 - 看看他们是如何做到的 - 所以这对用户来说不会那么令人惊讶)。

(还要确保在生成任何随 secret 码时,您使用加密随机数生成器作为基础 - 可能有一个 iPhone API 用于此 - 否则您的密码可能是可预测的)。

关于iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351627/

相关文章:

ruby-on-rails - Rails Postgres - 日期时间值不会保存到日期时间列中

ruby - 从 has_many 关系中检索记录数

ruby - 如何使用 Doxygen 记录 Ruby 代码?

ruby - 在 BoundingBox 中创建一组随机的 LatLngs

ruby-on-rails - Ruby 哈希选择

iphone - 有谁知道我在哪里可以找到 iPhone 搜索栏样式?

iphone - XCode - 多个目标,多个*国际化*名称?

ios - 使用缓冲从 objective-c 中的 url 播放视频

ruby-on-rails - ArgumentError(Api::V1 的副本已从模块树中删除但仍处于事件状态!)

javascript - Bootstrap 选项卡需要点击两次才能在 iPhone 上使用 Meteor 进行更改