Clearance este un sistem simplu de autentificare cu e-mail și parola construit de echipa de la Thoughtbot. Ea a păstrat inconvenientele, dar intenționează să fie ușor de ignorat. Sistemul este întreținut în mod activ și puteți urmări GitHub.
În acest tutorial, veți vedea cum să integrați programul Clearance într-o aplicație Rails. Vom folosi o aplicație în miniatură. Sa incepem!
Veți începe prin generarea aplicației Rails. În scopul acestui tutorial, îmi voi spune numele tutsplus-clearance-
.
rails new tutsplus-clearance-T
Asta va face magia.
Veți avea nevoie de bootstrap pentru a face aplicația să arate bine. Adăugați bijuteria Bootstrap la dvs. Gemfile
.
# Gemfile ... bijuterie "bootstrap-sass"
Instalați bijuteria rulând instalare pachet
.
Acum modificați cerere
.
SCSS
pentru a arata astfel:
# app / assets / stylesheets / application.scss @import 'bootstrap-sprockets'; @import 'bootstrap';
Deschide-ți Gemfile
pentru a adăuga gemul Clearance.
# Gemfile "clearance-ul"
Acum, instalați bijuteria.
instalare pachet
În acest moment, executați comanda generatorului pentru a instala degajare
.
șinele generează spațiu liber: instalați
Acest lucru va genera câteva ieșiri pe terminalul dvs., care arată ca și cele de mai jos:
crează config / initializers / clearance.rb inserați aplicația / controlorii / application_controller.rb crea app / models / user.rb create db / migrate / 20161115101323_create_users.rb ******************* ************************************************** *********** Pașii următori: 1. Configurați mailul pentru a crea adrese URL complete în e-mailuri: # config / environments / development, test .rb config.action_mailer.default_url_options = host: 'localhost: 3000 ' În producție ar trebui să fie numele de domeniu al aplicației. 2. Afișați sesiunea de utilizatori și clipește. De exemplu, în aspectul aplicației: <% if signed_in? %> Conectat ca: <%= current_user.email %> <%= button_to 'Sign out', sign_out_path, method: :delete %> <% else %> <%= link_to 'Sign in', sign_in_path %> <% end %><% flash.each do |key, value| %>3. Migrați: rake db: migrați ********************************************** *************************************<%= value %><% end %>
Când ați executat comanda, în aplicația dvs. au fost generate câteva fișiere. Un astfel de fișier este clearance.rb, pe care îl puteți găsi în config / initializatori
director. A Utilizator
modelul a fost, de asemenea, generat și, împreună cu acesta, aveți și un fișier de migrare care arată astfel:
clasa CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.timestamps null: false t.string :email, null: false t.string :encrypted_password, limit: 128, null: false t.string :confirmation_token, limit: 128 t.string :remember_token, limit: 128, null: false end add_index :users, :email add_index :users, :remember_token end end
Conform rezultatelor, primul lucru pe care doriți să-l faceți este să editați config-ul dvs. de mediu. Pentru a face acest lucru, navigați la config / medii / development.rb
și adăugați linia de mai jos, chiar deasupra Sfârșit
delimitator.
... config.action_mailer.default_url_options = gazdă: 'localhost: 3000' sfârșit
Apoi, navigați la config / initializatori / clearance.rb
pentru a le edita, iar când sunteți acolo, schimbați adresa de e-mail a expeditorului de la cea implicită la oricare dintre opțiunile dvs. Aceasta este ceea ce veți vedea când deschideți fișierul.
# config / initializers / clearance.rb Clearance.configure do | config config.mailer_sender = "[email protected]" sfârșit
Puteți să înlocuiți configurația implicită prin adăugarea în următorul fragment de cod și configurarea acestuia conform cerințelor dvs..
# config / initializers / clearance.rb Clearance.configure do | config config.allow_sign_up = true config.cookie_domain = ".example.com" config.cookie_expiration = lambda | cookies | 1.year.from_now.utc config.cookie_name = "remember_token" config.cookie_path = "/" config.routes = true config.httponly = false config.mailer_sender = "[email protected]" config.password_strategy = Clearance :: PasswordStrategies :: BCrypt config.redirect_url = "/" config.secure_cookie = false config.sign_in_guards = [] config.user_model = End user
Rulați comanda pentru a migra baza de date.
rake db: migrați
Deschide-ți PagesController
și adăugați un index
acțiune.
# app / controllers / pages_controller.rb clasă PagesController < ApplicationController def index end end
Apoi, creați o vizualizare pentru index
acțiune pe care tocmai ați creat-o.
Adăugați fragmentul de cod de mai jos:
# App / opinii / pagini / index.html.erbTutsplus Clearance
Bine ați venit pe pagina noastră de curățenie.
Editați rutele dvs. la:
# config / routes.rb Rails.application.routes.draw face rădăcină la: "pages # index" sfârșit
Creați un nume parțial _navigation.html.erb
în interiorul aspecte
director. Acesta va fi folosit pentru a face față tot ceea ce are de a face cu navigarea aplicației dvs..
Inserați următorul cod și salvați-l.
# App / opinii / machete / _navigation.html.erb<% flash.each do |key, value| %><%= value %><% end %>
Cu Clearance, aveți posibilitatea să creați acces restricționat la anumite pagini alese de dvs. în aplicația dvs. Să vedem cum se face.
Creați o vizualizare pentru a nou
acțiune în app / views / pagini
, numele fișierului ar trebui să fie new.html.erb
. Lipiți codul de mai jos.
# App / opinii / pagini / new.html.erbPagina restricționată
Această pagină este limitată la utilizatorii autentificați, dacă vedeți acest lucru înseamnă că sunteți un superstar!
Acum trebuie să adăugați linia de mai jos la config / routes.rb
.
# config / routes.rb ... resurse: pagini, numai:: nou ...
În cele din urmă, du-te la dvs. PagesController
face ca ceea ce am mai jos.
# aplicații / controlori / pages_controller.rb ClassController < ApplicationController before_action :require_login, only: [:new] def index end def new end end
În codul de mai sus, facem uz de ajutorul Clearance, require_login
, pentru a restricționa accesul la nou
acțiune. Pentru a vedea cum funcționează, porniți serverul de șine rulând rails server
de la terminalul tău. Punctați browserul dvs. la http: // locahost: 3000 / pagini / noi
și ar trebui să vă redirecționeze la pagina de sign-in.
Clearance-ul oferă, de asemenea, constrângeri de rutare care pot fi utilizate pentru controlul accesului.
# config / routes.rb Rails.application.routes.draw face constrângeri Clearance :: Constrângeri :: SignedOut.new rădăcină la: 'pages # index' constrângeri constrângeri Clearance :: Constrângeri :: SignedIn.new rădăcină la: "pagini #new ', ca:: signed_in_root end end
În codul de mai sus, a fost creat un alt traseu pentru utilizatorii autentificați.
Multe lucruri se întâmplă în spatele scenei când începeți să utilizați Clearance, lucruri pe care nu le puteți vedea. Este posibil să veniți un moment în care doriți să personalizați lucrurile în mod diferit, în funcție de specificațiile aplicației dvs. Clearance vă permite să înlocuiți configurația implicită.
Pentru a ignora (sau a genera) rute de eliberare, executați această comandă de la terminalul dvs..
șinele generează clearance-ul: rutele
Fișierul dvs. de rute ar trebui să arate astfel:
# config / routes.rb Rails.application.routes.draw resurse: parole, controler: "clearance-ul / parolele", numai: [: crea]: resursa: : crea] resurse: utilizatori, controler: "clearance-ul / utilizatorii", numai: [: crea] face resursa: parola, controler: "clearance / passwords", numai: [: create; sign_in "=>" clearance-ul / sesiunile # new ", ca:" sign_in "delete" / sign_out "=> ", ca:" sign_up "rădăcină la:" pagini # index "resurse: pagini, numai:: sfârșitul nou
Comanda va seta și config.routes
setarea la fals în config / initializatori / clearance.rb
fişier. Aceasta înseamnă că fișierul personalizat care tocmai a fost generat va fi utilizat.
Pentru a genera vizualizări pentru modificare, executați:
șinele generează clearance-ul: vederi
Unele dintre fișierele care vor fi generate includ:
app / views / passwords / create.html.ruge app / views / passwords / edit.html.web app / views / passwords / new.html.emp app / views / sesiuni / _form.html.emp app / views / app.new.html.py app / views / users / _form.html.py app / views / users / new.html.erb config / locales / clearance.en.yml
Veți vedea o solicitare în terminalul dvs. cerând să vă înlocuiți app / opinii / machete / application.html.erb
fişier. Alegeți opțiunea dorită.
În mod prestabilit, Clearance folosește aspectul implicit al aplicației. Dacă doriți să schimbați aspectul pe care Clearance-ul îl folosește la randarea vizualizărilor, pur și simplu specificați aspectul într-un inițializator.
Clearance :: PasswordsController.layout Clearance :: my_passwords_layout Clearance :: SessionsController.layout Clearance :: my_sessions_layout :: UsersController.layout "my_admin_layout"
Clearance vă oferă metode de ajutor care pot fi utilizate în aplicația dumneavoastră controlere
, vizualizari
, și ajutoare
. Aceste metode includ inscris?
, signed_out?
, și utilizator curent
. De exemplu:
<% if signed_in? %> <%= current_user.email %> <%= button_to "Sign out", sign_out_path, method: :delete %> <% else %> <%= link_to "Sign in", sign_in_path %> <% end %>
Clearance-ul are multe de oferit când vine vorba de autentificare, deci asigurați-vă că îl veți încerca în următorul proiect. Puteți afla mai multe prin verificarea paginii GitHub.