我不知道这对你来说是否仍然是一个紧迫的问题,但我想提出一些建议。
对于您的 API,您可以输入 devise_token_auth,它会执行您在那里进行身份验证所需的一切。
如果您需要对页面的服务器端呈现进行身份验证(例如登录表单、重置密码表单等),也只需投入常规设计即可。它将与您完全相同的用户模型和表一起使用,并且使用与 devise_token_auth 使用的相同资源启动和运行事情几乎没有摩擦。
宝石文件
#autentication and authorization
gem 'devise', '~> 3.5', '>= 3.5.6'
gem 'devise_token_auth', '0.1.37'
然后运行
bundle
运行设计的安装程序:
rails generate devise:install
然后生成你的用户模型:
rails generate devise User
立即安装 devise_token_auth:
rails g devise_token_auth:install User "auth"
并确保您的数据库已迁移:
rake db:migrate
我认为 devise_token_auth 可能会覆盖您的用户模型,我不确定,但如果确实如此,请仅保留 devise_token_auth 的迁移并忽略 Devise 的迁移。
然后确保您的 routes.rb 与此匹配:
Rails.application.routes.draw do
devise_for :users
root "home#index"
namespace :api, defaults: { format: :json } do
namespace :v1 do #I namespace my routes
mount_devise_token_auth_for "User", at: "auth"
end
end
end
devise_for 必须在 mount_devise_token_auth 之前。
然后只需参考官方设计和设计令牌身份验证文档,让这两种解决方案都适合您。
希望这对达到这一点并需要在移动应用程序和浏览器网络应用程序上对用户进行身份验证的任何人有所帮助。