Ruby on Rails
Autenticazione utente in Rails
Ricerca…
introduzione
Devise è una gemma molto potente, ti consente di iscriverti, accedere e uscire dalle opzioni subito dopo l'installazione. Inoltre, l'utente può aggiungere autenticazioni e restrizioni alle sue applicazioni. Devise anche venire con le proprie opinioni, se l'utente vuole usare. Un utente può inoltre personalizzare la registrazione e accedere ai moduli in base alle proprie necessità e necessità. Va notato che Devise ti consiglia di implementare il tuo login se sei nuovo alle guide.
Osservazioni
Al momento della generazione delle configurazioni di configurazione che utilizzano i rails generate devise:install
, devise elencherà una serie di istruzioni sul terminale da seguire.
Se hai già un modello USER
, eseguendo questo comando i rails generate devise USER
aggiungerà le colonne necessarie al tuo modello USER
esistente.
Usa questo metodo di supporto before_action :authenticate_user!
nella parte superiore del controller per verificare se l' user
è connesso o meno. in caso contrario, verranno reindirizzati alla pagina di accesso.
Autenticazione usando Devise
Aggiungi gemma al Gemfile:
gem 'devise'
Quindi eseguire il comando di bundle install
del bundle install
.
Usa il comando $ rails generate devise:install
per generare il file di configurazione richiesto.
Imposta le opzioni URL predefinite per il mailer Devise in ogni ambiente Nell'ambiente di sviluppo aggiungi questa riga:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
alla tua config/environments/development.rb
allo stesso modo in produzione questo file di config/environments/production.rb
e aggiungi
config.action_mailer.default_url_options = { host: 'your-site-url'}
Quindi creare un modello utilizzando: $ rails generate devise USER
Dove USER
è il nome della classe per il quale si desidera implementare l'autenticazione.
Infine, esegui: rake db:migrate
e siete tutti impostati.
Viste personalizzate
Se è necessario configurare le viste, è possibile utilizzare i rails generate devise:views
generatore di rails generate devise:views
che copierà tutte le viste all'applicazione. Quindi puoi modificarli come desiderato.
Se si dispone di più di un modello Devise nella propria applicazione (ad esempio Utente e Amministratore), si noterà che Devise utilizza le stesse viste per tutti i modelli. Devise offre un modo semplice per personalizzare le visualizzazioni. config.scoped_views = true
nel file config/initializers/devise.rb
.
È anche possibile utilizzare il generatore per creare viste con scope: i rails generate devise:views users
Se si desidera generare solo alcune serie di viste, come quelle per il modulo registrabile e confermabile, utilizzare il flag -v: rails generate devise:views -v registrations confirmations
Definire i filtri e gli helper del controller
Per configurare un controller con l'autenticazione utente usando devise, aggiungi questo before_action: (assumendo che il tuo modello di dispositivo sia 'Utente'):
before_action :authenticate_user!
Per verificare se un utente ha effettuato l'accesso, utilizzare il seguente helper:
user_signed_in?
Per l'attuale utente che ha effettuato l'accesso, usa questo helper:
current_user
È possibile accedere alla sessione per questo ambito:
user_session
- Nota che se il tuo modello Devise è chiamato
Member
anzichéUser
, sostituisci l'user
sopra con ilmember
Omniauth
Prima scegli la tua strategia di autenticazione e aggiungila al tuo Gemfile
. Puoi trovare un elenco di strategie qui: https://github.com/intridea/omniauth/wiki/List-of-Strategies
gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'
Puoi aggiungerlo al middleware del tuo rails in questo modo:
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
Per impostazione predefinita, OmniAuth aggiungerà /auth/:provider
ai percorsi e puoi iniziare utilizzando questi percorsi.
Per impostazione predefinita, se si verifica un errore, omniauth reindirizzerà a /auth/failure
has_secure_password
Crea modello utente
rails generate model User email:string password_digest:string
Aggiungi il modulo has_secure_password al modello Utente
class User < ActiveRecord::Base has_secure_password end
Ora puoi creare un nuovo utente con password
user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'
Verifica la password con il metodo di autenticazione
user.authenticate('somepassword')
has_secure_token
Crea modello utente
# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
has_secure_token
has_secure_token :auth_token
end
Ora quando crei un nuovo utente un token e auth_token vengono generati automaticamente
user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"
Puoi aggiornare i token usando regenerate_token
e regenerate_auth_token
user.regenerate_token # => true
user.regenerate_auth_token # => true