“devise_token_auth”gem是否支持基于Web的身份验证?

问题描述 投票:1回答:1

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

devise rubygems ruby-on-rails-4.2
1个回答
5
投票

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

对于您的API,您可以输入devise_token_auth,它将执行您在那里进行身份验证所需的一切。

如果您需要使用服务器端页面呈现进行身份验证(例如登录表单,重置密码表单等),那么也可以使用常规设备。它将与您完全相同的用户模型和表一起使用,并且使用与devise_token_auth相同的资源来完成和运行时几乎没有什么摩擦。

的Gemfile

#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之前。

然后,请参阅官方设计并设计令牌身份验证文档,以使两种解决方案都适合您。

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

© www.soinside.com 2019 - 2024. All rights reserved.