Поиск…


Вступление

Devise - это решение для проверки подлинности для Rails. Прежде чем идти дальше, я хотел бы добавить краткое описание API. Таким образом, API не обрабатывает сеансы (является апатридом), что означает тот, который обеспечивает ответ после запроса, а затем не требует дополнительного внимания, а это означает, что для работы системы не требуется никакого предыдущего или будущего состояния, всякий раз, когда мы запрашиваем сервер передавать данные аутентификации всем API и сообщать разработчикам, что они не хранят данные аутентификации.

Начиная

Итак, сначала мы создадим проект и устройство настройки рельсов

создать приложение для рельсов

rails new devise_example

теперь добавьте проект в список драгоценных камней

вы можете найти файл с именем «Gemfile» в корне проекта rails

Затем запустите 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 что предотвратит создание сеанса для каждого запроса, поэтому мы достигли состояния без сохранения



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow