Поиск…


Вступление

Devise - очень мощный камень, он позволяет вам регистрироваться, входить и выходить из системы сразу после установки. Кроме того, пользователь может добавлять аутентификации и ограничения для своих приложений. У разработчика также есть свои собственные взгляды, если пользователь хочет использовать. Пользователь также может настраивать регистрацию и подписывать формы в соответствии с ее потребностями и требованиями. Следует отметить, что Devise рекомендует вам реализовать свой собственный логин, если вы новичок в рельсах.

замечания

Во время генерации конфигураций конфигурации с использованием rails generate devise:install , devise будет перечислять кучу инструкций на терминале для последующего.

Если у вас уже есть модель USER , запуск этой команды rails generate devise USER добавит необходимые столбцы в существующую модель USER .

Используйте этот вспомогательный метод before_action :authenticate_user! в верхней части вашего контроллера, чтобы проверить, вошел ли user в систему или нет. если нет, то они будут перенаправлены на страницу входа.

Аутентификация с помощью утилиты

Добавить драгоценный камень в Gemfile:

gem 'devise'

Затем запустите команду bundle install .

Используйте команду $ rails generate devise:install чтобы сгенерировать требуемый файл конфигурации.

Настройте параметры URL по умолчанию для почтовой программы Devise в каждой среде. В среде разработки добавьте эту строку:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

к вашему config/environments/development.rb

аналогично в этом файле редактирования config/environments/production.rb и добавьте

config.action_mailer.default_url_options = { host: 'your-site-url'}

Затем создайте модель, используя: $ rails generate devise USER Где USER - это имя класса, для которого вы хотите реализовать аутентификацию.

Наконец, запустите: rake db:migrate и вы все настроены.

Пользовательские виды

Если вам нужно настроить свои представления, вы можете использовать генератор rails generate devise:views , который скопирует все представления в ваше приложение. Затем вы можете отредактировать их по своему желанию.

Если в вашем приложении имеется более одной модели Devise (например, User and Admin), вы заметите, что Devise использует те же представления для всех моделей. Devise предлагает простой способ настройки представлений. Установите config.scoped_views = true внутри файла config/initializers/devise.rb .

Вы также можете использовать генератор для создания видимых видов: rails generate devise:views users

Если вы хотите создать только несколько наборов представлений, например, для регистрируемого и подтверждаемого модуля, используйте флаг -v: rails generate devise:views -v registrations confirmations

Конфигурирование фильтров и помощников

Чтобы настроить контроллер с аутентификацией пользователя с помощью devise, добавьте это before_action: (если ваша модель разработки - «Пользователь»):

before_action :authenticate_user!

Чтобы проверить, был ли пользователь подписан, используйте следующий помощник:

user_signed_in?

Для текущего пользователя с подпиской используйте этот помощник:

current_user

Вы можете получить доступ к сеансу для этой области:

user_session

  • Обратите внимание, что если ваша модель Devise называется Member вместо User , замените user выше на member

OmniAuth

Сначала выберите свою стратегию аутентификации и добавьте ее в свой Gemfile . Здесь вы можете найти список стратегий: https://github.com/intradea/omniauth/wiki/List-of-Strategies

gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'

Вы можете добавить это к своему промежуточному программному обеспечению rails следующим образом:

Rails.application.config.middleware.use OmniAuth::Builder do
  require 'openid/store/filesystem' 
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
  provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end

По умолчанию OmniAuth добавит /auth/:provider к вашим маршрутам, и вы можете начать с использования этих путей.

По умолчанию, если есть сбой, omniauth перенаправляет /auth/failure

has_secure_password

Создать модель пользователя

rails generate model User email:string password_digest:string

Добавить модуль has_secure_password в модель пользователя

class User < ActiveRecord::Base
  has_secure_password
end

Теперь вы можете создать нового пользователя с паролем

user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'

Проверка пароля с помощью метода проверки подлинности

user.authenticate('somepassword')  

has_secure_token

Создать модель пользователя

# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
  has_secure_token
  has_secure_token :auth_token
end

Теперь, когда вы создаете нового пользователя, токены и auth_token автоматически генерируются

user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"

Вы можете обновлять маркеры с помощью функции regenerate_token и regenerate_auth_token

user.regenerate_token # => true
user.regenerate_auth_token # => true


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