Szukaj…


Wprowadzenie

Devise to bardzo potężny klejnot, który umożliwia rejestrację, zalogowanie się i wylogowanie opcji zaraz po instalacji. Ponadto użytkownik może dodawać uwierzytelnienia i ograniczenia do swoich aplikacji. Devise ma również własne widoki, jeśli użytkownik chce z niego korzystać. Użytkownik może również dostosować formularze rejestracji i logowania w zależności od potrzeb i wymagań. Należy zauważyć, że Devise zaleca wdrożenie własnego loginu, jeśli dopiero zaczynasz korzystać z railsów.

Uwagi

Podczas generowania konfiguracji devise przy użyciu rails generate devise:install , devise wyświetli listę instrukcji na terminalu do naśladowania.

Jeśli masz już model USER , uruchomienie tego polecenia rails generate devise USER doda niezbędne kolumny do istniejącego modelu USER .

before_action :authenticate_user! skorzystaniem z tej metody pomocniczej before_action :authenticate_user! u góry kontrolera, aby sprawdzić, czy user jest zalogowany, czy nie. jeśli nie, zostaną przekierowani na stronę logowania.

Uwierzytelnianie za pomocą Devise

Dodaj klejnot do Gemfile:

gem 'devise'

Następnie uruchom polecenie bundle install .

Użyj polecenia $ rails generate devise:install aby wygenerować wymagany plik konfiguracyjny.

Ustaw domyślne opcje adresu URL dla Devise mailer w każdym środowisku W środowisku programistycznym dodaj ten wiersz:

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

do config/environments/development.rb

podobnie w produkcji edytuj plik config/environments/production.rb i dodaj

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

Następnie utwórz model, używając: $ rails generate devise USER Gdzie USER to nazwa klasy, dla której chcesz wdrożyć uwierzytelnianie.

Na koniec uruchom: rake db:migrate i wszystko gotowe.

Widoki niestandardowe

Jeśli musisz skonfigurować swoje widoki, możesz użyć generatora rails generate devise:views generatora rails generate devise:views , który skopiuje wszystkie widoki do aplikacji. Następnie możesz je edytować według potrzeb.

Jeśli masz w aplikacji więcej niż jeden model Devise (na przykład Użytkownik i Administrator), zauważysz, że Devise używa tych samych widoków dla wszystkich modeli. Devise oferuje łatwy sposób dostosowywania widoków. Ustaw config.scoped_views = true w pliku config/initializers/devise.rb .

Możesz także użyć generatora do tworzenia widoków o zasięgu: rails generate devise:views users

Jeśli chcesz wygenerować tylko kilka zestawów widoków, takich jak te dla rejestrowalnego i potwierdzalnego modułu, użyj flagi -v: rails generate devise:views -v registrations confirmations

Opracuj filtry kontrolerów i pomocników

Aby skonfigurować kontroler z uwierzytelnianiem użytkownika za pomocą devise, dodaj to przed działaniem: (zakładając, że twoim wymyślonym modelem jest „User”):

before_action :authenticate_user!

Aby sprawdzić, czy użytkownik jest zalogowany, użyj następującego pomocnika:

user_signed_in?

Dla bieżącego zalogowanego użytkownika użyj tego pomocnika:

current_user

Możesz uzyskać dostęp do sesji dla tego zakresu:

user_session

  • Pamiętaj, że jeśli Twój model Devise nosi nazwę Member zamiast User , zastąp powyższego user member

Omniauth

Najpierw wybierz strategię uwierzytelniania i dodaj ją do swojego Gemfile . Możesz znaleźć listę strategii tutaj: https://github.com/intridea/omniauth/wiki/List-of-Strategies

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

Możesz dodać to do swojego oprogramowania pośredniego:

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

Domyślnie OmniAuth doda do twoich tras /auth/:provider i możesz zacząć od korzystania z tych ścieżek.

Domyślnie, jeśli wystąpi awaria, omniauth przekieruje do /auth/failure

has_secure_password

Utwórz model użytkownika

rails generate model User email:string password_digest:string

Dodaj moduł has_secure_password do modelu użytkownika

class User < ActiveRecord::Base
  has_secure_password
end

Teraz możesz utworzyć nowego użytkownika z hasłem

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

Zweryfikuj hasło za pomocą metody uwierzytelnienia

user.authenticate('somepassword')  

has_secure_token

Utwórz model użytkownika

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

Teraz, gdy tworzysz nowego użytkownika, token i auth_token są generowane automatycznie

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

Możesz zaktualizować tokeny za pomocą regenerate_token i regenerate_auth_token

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow