入門

首先,我們將建立 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,這將阻止在每個請求上建立一個會話,因此我們實現了無狀態重新