入门

首先,我们将创建 rails 项目和设置设备

创建一个 rails 应用程序

rails new devise_example

现在添加设计到宝石列表

你可以在 rails 项目的根目录下找到一个名为’Gemfile’的文件

然后运行 bundle install

接下来,你需要运行生成器:

rails generate devise:install

现在在控制台上你可以找到一些跟随它的说明。

生成设计模型

rails generate devise MODEL

然后运行 rake db:migrate

有关更多详细信息,请访问: Devise Gem

身份验证令牌

身份验证令牌用于使用唯一令牌对用户进行身份验证,因此,在首先进行逻辑之前,我们需要将 auth_token 字段添加到 Devise 模型中

因此,

rails g migration add_authentication_token_to_users

class AddAuthenticationTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :auth_token, :string, default: ""
    add_index :users, :auth_token, unique: true
  end
end

然后运行 rake db:migrate

现在我们都准备使用 auth_token 进行身份验证

app/controllers/application_controllers.rb

首先是这条线

respond_to :html, :json 

这将有助于 rails 应用程序响应 html 和 json

然后

protect_from_forgery with: :null

因为我们不处理会话,所以会改变这个:null

现在我们将在 application_controller 中添加身份验证方法

因此,默认情况下,Devise 使用电子邮件作为唯一字段,我们也可以使用自定义字段,在这种情况下,我们将使用 user_email 和 auth_token 进行身份验证。

  before_filter do
    user_email = params[:user_email].presence
    user       = user_email && User.find_by_email(user_email)

    if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
      sign_in user, store: false
    end
  end

注意:上面的代码完全基于你的逻辑,我只是​​想解释一下工作示例

在上面代码的第 6 行,你可以看到我设置了 store: false,这将阻止在每个请求上创建一个会话,因此我们实现了无状态重新