【问题标题】:Does "devise_token_auth" gem support web-based authentication?“devise_token_auth” gem 是否支持基于 Web 的身份验证?
【发布时间】:2016-06-21 02:26:34
【问题描述】:

此 gem ("devise_token_auth") 用于使用 JSON API 进行前端开发的应用程序的令牌身份验证。 我们可以使用这个 gem 进行服务器端渲染吗?如果是,那么如何将先前响应中的令牌添加到当前请求中?

【问题讨论】:

  • 如果您正在寻找简单的服务器端解决方案,为什么不直接使用 devise gem?
  • 我可以使用 devise,但它不支持移动应用程序的 API。我想要同时支持网站和移动应用程序的东西。

标签: devise rubygems ruby-on-rails-4.2


【解决方案1】:

我不知道这对你来说是否仍然是一个紧迫的问题,但我想提出一些建议。

对于您的 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 之前。

然后只需参考官方设计和设计令牌身份验证文档,让这两种解决方案都适合您。

希望这对达到这一点并需要在移动应用程序和浏览器网络应用程序上对用户进行身份验证的任何人有所帮助。

【讨论】:

  • 谢谢。我会试试这个!
  • 在我使用的版本 (0.1.38) 中,支持标准设计功能(基于 Web 的身份验证) - 您可以在 devise_token_auth 配置中使用 config.enable_standard_devise_support = true 启用它跨度>
  • 只是为了记录,我已经让这两个解决方案都可以正常工作,而无需使用该配置切换但命名空间与 api 或任何其他特殊命名空间下的设计令牌身份验证相关的所有内容。
猜你喜欢
  • 2019-11-30
  • 1970-01-01
  • 2020-01-08
  • 2018-11-24
  • 2012-07-12
  • 1970-01-01
  • 2020-07-12
  • 2016-05-01
  • 1970-01-01
相关资源
最近更新 更多