Ruby on Rails
Аутентификация Api с помощью Devise
Поиск…
Вступление
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
что предотвратит создание сеанса для каждого запроса, поэтому мы достигли состояния без сохранения