Sök…


Introduktion

Devise är en mycket kraftfull pärla, den låter dig registrera dig, logga in och logga ut alternativ efter installationen. Dessutom kan användaren lägga till autentiseringar och begränsningar i sina applikationer. Enheten kommer också med sina egna vyer, om användaren vill använda. En användare kan också anpassa anmälan och logga in formulär enligt dess behov och krav. Det bör noteras att Devise rekommenderar att du implementerar din egen inloggning om du är ny med skenor.

Anmärkningar

Vid tidpunkten för att generera utforma konfigureringar med hjälp av rails generate devise:install , utforma kommer att lista upp ett antal instruktioner på terminalen att följa.

Om du redan har en USER modell kommer att köra dessa kommandorails rails generate devise USER och lägga till nödvändiga kolumner till din befintliga USER modell.

Använd denna before_action :authenticate_user! längst upp på din controller för att kontrollera om user är inloggad eller inte. om inte, kommer de att omdirigeras till inloggningssidan.

Autentisering med hjälp av Devise

Lägg till pärla i Gemfile:

gem 'devise'

Kör sedan bundle install kommandot.

Använd kommandot $ rails generate devise:install att generera nödvändig konfigurationsfil.

Ställ in standard-URL-alternativ för Devise mailer i varje miljö Lägg till denna rad i utvecklingsmiljö:

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

till dina config/environments/development.rb

på liknande sätt i produktionen, redigera config/environments/production.rb och lägg till

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

Skapa sedan en modell med: $ rails generate devise USER där USER är det klassnamn som du vill implementera autentisering för.

Slutligen, kör: rake db:migrate så är du redo.

Anpassade vyer

Om du behöver konfigurera dina vyer kan du använda rails generate devise:views generator som kopierar alla vyer till din applikation. Sedan kan du redigera dem efter önskemål.

Om du har mer än en enhetsmodell i din applikation (till exempel användare och administratör) kommer du att märka att Devise använder samma vyer för alla modeller. Enhet erbjuder ett enkelt sätt att anpassa vyer. Ställ config.scoped_views = true inuti filen config/initializers/devise.rb .

Du kan också använda generatoren för att skapa scoped-vyer: rails generate devise:views users

Om du bara vill generera några uppsättningar av vyer, till exempel de för den registrerbara och bekräftbara modulen, använd -v-flaggan: rails generate devise:views -v registrations confirmations

Device Controller Filters & Helpers

För att ställa in en controller med användarautentisering med hjälp av plan, lägg till detta före_action: (förutsatt att din designmodell är 'User'):

before_action :authenticate_user!

För att verifiera om en användare är inloggad använder du följande hjälpare:

user_signed_in?

För den nuvarande inloggade användaren använder du denna hjälpare:

current_user

Du kan komma åt sessionen för det här omfånget:

user_session

  • Observera att om din Devise modell kallas Member i stället för User , byt user ovan med member

Omniauth

Välj först din autorisationsstrategi och lägg till den i din Gemfile . Du hittar en lista över strategier här: https://github.com/intridea/omniauth/wiki/List-of-Strategies

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

Du kan lägga till detta till din rails mellanprogram så:

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

Som standard lägger OmniAuth till /auth/:provider till dina rutter och du kan börja med att använda dessa sökvägar.

Om det finns ett fel, omdirigeras /auth/failure till /auth/failure

has_secure_password

Skapa användarmodell

rails generate model User email:string password_digest:string

Lägg till has_secure_password-modul till användarmodell

class User < ActiveRecord::Base
  has_secure_password
end

Nu kan du skapa en ny användare med lösenord

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

Verifiera lösenord med autentiseringsmetod

user.authenticate('somepassword')  

has_secure_token

Skapa användarmodell

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

När du skapar en ny användare skapas automatiskt ett token och authent_token

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

Du kan uppdatera tokens med regenerate_token och regenerate_auth_token

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow