Zoeken…


Invoering

Devise is een zeer krachtig juweeltje, waarmee je je kunt aanmelden, aanmelden en afmelden opties net na de installatie. Bovendien kan de gebruiker authenticaties en beperkingen aan zijn applicaties toevoegen. Devise komt ook met zijn eigen weergaven, als de gebruiker wil gebruiken. Een gebruiker kan ook het aanmelden en het aanmelden van formulieren aanpassen aan zijn behoefte en vereiste. Opgemerkt moet worden dat Devise aanbeveelt dat u uw eigen login implementeert als u nieuw bent bij rails.

Opmerkingen

Op het moment van het genereren van bedenken configs met behulp van rails generate devise:install , bedenken zal een aantal instructies op de terminal weergeven die moeten worden gevolgd.

Als u al een USER model hebt, zal het uitvoeren van deze opdrachtrails rails generate devise USER nodige kolommen toevoegen aan uw bestaande USER model.

Gebruik deze helper-methode voor het before_action :authenticate_user! bovenaan uw controller om te controleren of de user is aangemeld of niet. zo niet, dan worden ze doorgestuurd naar de inlogpagina.

Verificatie met Devise

Gem toevoegen aan de Gemfile:

gem 'devise'

Voer vervolgens de opdracht bundle install uit.

Gebruik opdracht $ rails generate devise:install om het vereiste configuratiebestand te genereren.

Stel de standaard URL-opties in voor de Devise-mailer in elke omgeving Voeg in ontwikkelomgeving deze regel toe:

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

naar uw config/environments/development.rb

evenzo in productie dit edit config/environments/production.rb bestand en toevoegen

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

Maak vervolgens een model met: $ rails generate devise USER waarbij USER de USER is waarvoor u authenticatie wilt implementeren.

Voer tot slot: rake db:migrate en je bent helemaal klaar.

Aangepaste weergaven

Als u uw weergaven moet configureren, kunt u de rails generate devise:views die alle weergaven naar uw toepassing kopieert. Vervolgens kunt u ze naar wens bewerken.

Als u meer dan één Devise-model in uw toepassing hebt (bijvoorbeeld Gebruiker en Beheerder), zult u merken dat Devise voor alle modellen dezelfde weergaven gebruikt. Devise biedt een eenvoudige manier om weergaven aan te passen. Set config.scoped_views = true in het bestand config/initializers/devise.rb .

U kunt de generator ook gebruiken om scoped views te maken: rails generate devise:views users

Als u slechts enkele sets weergaven wilt genereren, zoals die voor de registreerbare en bevestigbare module, gebruik dan de vlag -v: rails generate devise:views -v registrations confirmations

Devise Controller Filters & Helpers

Om een controller in te stellen met gebruikersauthenticatie met behulp van devise, voegt u dit toe voor extra: (ervan uitgaande dat uw devise-model 'Gebruiker' is):

before_action :authenticate_user!

Gebruik de volgende helper om te controleren of een gebruiker is aangemeld:

user_signed_in?

Gebruik de helper voor de huidige aangemelde gebruiker:

current_user

U hebt toegang tot de sessie voor dit bereik:

user_session

  • Merk op dat als uw Devise-model Member wordt genoemd in plaats van User , user hierboven wordt vervangen door member

Omniauth

Kies eerst uw verificatiestrategie en voeg deze toe aan uw Gemfile . Je kunt hier een lijst met strategieën vinden: https://github.com/intridea/omniauth/wiki/List-of-Strategies

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

U kunt dit als volgt aan uw rails-middleware toevoegen:

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 voegt standaard /auth/:provider aan uw routes en u kunt beginnen met deze paden.

Als er een storing is, zal omniauth standaard omleiden naar /auth/failure

has_secure_password

Maak een gebruikersmodel

rails generate model User email:string password_digest:string

Voeg has_secure_password module toe aan Gebruikersmodel

class User < ActiveRecord::Base
  has_secure_password
end

U kunt nu een nieuwe gebruiker met wachtwoord maken

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

Controleer wachtwoord met authenticatiemethode

user.authenticate('somepassword')  

has_secure_token

Maak een gebruikersmodel

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

Wanneer u nu een nieuwe gebruiker maakt, worden automatisch een token en auth_token gegenereerd

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

U kunt de tokens bijwerken met regenerate_token en regenerate_auth_token

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow