Devise Token Auth 使用教程
1、项目介绍
Devise Token Auth
是一个基于令牌的 Rails JSON API 认证解决方案,旨在与 jToker
和 ng-token-auth
等前端库协同工作。它支持多客户端和安全令牌认证,每次请求都会刷新令牌并在短时间内使其过期,从而确保应用的安全性。此外,它还维护每个客户端/设备的会话,允许用户拥有多个会话。
2、项目快速启动
安装依赖
首先,将 devise
和 devise_token_auth
添加到你的 Gemfile 中,然后运行 bundle install
:
gem 'devise'
gem 'devise_token_auth'
生成配置文件
运行以下命令生成 devise
和 devise_token_auth
的配置文件:
rails generate devise:install
rails generate devise_token_auth:install User auth
配置邮件选项
在 config/environments/development.rb
中添加以下配置:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
配置 CORS
为了允许应用接受请求,需要设置 rack-cors
。将以下内容添加到你的 Gemfile 并运行 bundle install
:
gem 'rack-cors'
在 config/application.rb
中配置 CORS 规则:
module YourApp
class Application < Rails::Application
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head],
expose: ['access-token', 'expiry', 'token-type', 'uid', 'client']
end
end
end
end
启动应用
现在你可以启动应用并使用 Postman 进行测试。发送一个 POST 请求到 http://localhost:3000/auth
来注册用户:
rails server
3、应用案例和最佳实践
应用案例
Devise Token Auth
适用于构建单页应用(SPA)或移动应用,需要令牌而非 cookie 进行认证的场景。例如,一个使用 AngularJS 和 ng-token-auth
的前端应用,通过 Devise Token Auth
进行用户认证和会话管理。
最佳实践
- 安全性:确保每次请求都刷新令牌并使其在短时间内过期,以提高安全性。
- 多客户端支持:维护每个客户端/设备的会话,允许用户拥有多个会话。
- 集成前端库:与
ng-token-auth
、jToker
等前端库无缝集成,简化前端开发。
4、典型生态项目
前端库
- ng-token-auth:适用于 AngularJS 的令牌认证库。
- jToker:适用于 jQuery 的令牌认证库。
- redux-token-auth:适用于使用 Redux 的 React 应用的令牌认证库。
其他相关项目
- OmniAuth:用于 OAuth2 认证,与
Devise Token Auth
结合使用,提供第三方登录功能。 - Devise:基础的用户认证库,
Devise Token Auth
是基于 Devise 的扩展。
通过以上步骤和最佳实践,你可以快速启动并使用 Devise Token Auth
构建安全的令牌认证系统。