我正在编写一个Rails 4应用程序,它将为一个尚未开发的移动应用程序公开一个API.用户将使用来自移动应用程序的邮箱和密码进行身份验证.

虽然我已经找到了很多关于这个话题的信息.很难辨别什么是过时的或非最佳的.我读过关于HTTP基本身份验证(它似乎不太安全)和基于HTTP令牌的身份验证(HTTP Token-based Auth),但我不确定如何将其与常规邮箱和密码身份验证(顺便说一句,我正在使用Desive)结合起来.

我只是想知道如何实现这一点,目前的最佳实践是什么,所以我一定会走上正确的道路.

推荐答案

从安全Angular 来看,重要的一点是将用户的邮箱和密码交换一次令牌,然后将该令牌用于后续请求.这是因为:

  1. 你不想让客户端应用程序负责保留用户的密码,因为漏洞或攻击可能会导致密码泄露;和
  2. 服务器颁发的令牌使您(和您的用户)能够在必要时使令牌过期,例如锁定被盗设备或阻止行为不当的API客户端.

实现这一点的方法有很多,但复杂程度各不相同.

这是一个非常新的教程,详细介绍了如何在Rails中创建一个基于令牌的身份验证API(不使用Desive,但仍然与理解概念相关):https://labs.kollegorna.se/blog/2015/04/build-an-api-now/

Ruby-on-rails相关问答推荐

仅当未在带有ENV[';Dyno';]的Heroku问题上运行时才初始化Sidekiq Cron

Rails TurboStream:可以向元素动态添加一个css类吗?

Gemfile需要较新版本的依赖项

Rails引擎importmap Uncaught ReferenceError:未定义tinymce

多对多模型通过控制台创建记录不起作用

具有 IN 子句的参数化查询在 ruby​​-on-rails 的 blazer 工具中无法按预期工作

Rails:当 id 方法为非标准时构建关联

Ruby on Rails 7 与 React 集成

Rails 3.1 assets资源 - 奇怪的开发服务

带有 simple_form 的按钮内的 HTML 代码

Rails 3 中图像路径的完整 url

使用回形针进行简单裁剪

Rails 中页面视图的简单计数器

使用devise gem点击确认链接后避免登录?

rails 方法获取模型的关联名称

Rails Rake 任务 - 访问模型类

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同

.erb 、 .rhtml 和 .html.erb 有什么区别?

无论何时 gem 在 Heroku 上运行 cron 作业(job)