Accesso web limitato (record) realizzato con Ruby on Rails

Sommario

Nelle applicazioni web in cui disponiamo di zone private a cui devono accedere solo i membri registrati, dobbiamo implementare meccanismi che consentano agli utenti di vedere solo una volta autenticati.
Il filtri Sono strumenti di Rotaie che ci consentono di intercettare chiamate a metodi e azioni, permettendoci di aggiungere i nostri metodi prima, durante o dopo, in modo da poter controllare il flusso dell'applicazione come meglio crediamo per soddisfare le nostre funzionalità. In questa fase useremo il prima del filtro per intercettare le chiamate alle nostre azioni, in questo modo possiamo verificare la sessione e sapere se l'utente è loggato, in caso contrario lo reindirizziamo dove ci siamo organizzati. Inseriamo questo metodo nel nostro controller dell'applicazione poiché è la base e in questo modo sarà disponibile per l'intera applicazione.
Vediamo il codice che abbiamo per questo:
 def autorizza a meno che session [: user_id] flash [: Notice] = "Accedi" redirect_to (: controller => "login",: action => "login") end end 

Come vediamo la logica dietro questo è abbastanza semplice, usiamo il condizionale di Ruby che è il a meno che, questo ci permette di condizionare che, a meno che la condizione non sia soddisfatta, il codice del blocco venga eseguito. Quindi, a meno che non abbiamo un ID di un utente in sessione, lo reindirizzeremo e gli chiederemo di autenticarsi nell'applicazione.
Ora nel nostro controller amministratore filtreremo e chiederemo agli utenti di autenticarsi:
 class AdminController <ApplicationController before_filter: autorizza 

E nel nostro controller di accesso facciamo anche qualcosa di simile, solo aggiungeremo l'eccezione dell'azione di accesso che è quella che ci interessa e che può essere vista da qualsiasi utente non autenticato:
 class LoginController: login 

Se non abbiamo effettuato l'accesso, dovremmo vedere qualcosa di simile quando accediamo alla pagina amministrativa dell'applicazione:

Ora abbiamo il modo di applicare e filtrare che gli utenti non possono vedere i pannelli amministrativi se non hanno effettuato l'accesso, tuttavia abbiamo un'ultima incoerenza, nella parte dell'eliminazione degli utenti dobbiamo evitare di eliminare l'amministratore generale dell'applicazione poiché se lo facciamo non farlo, c'è la possibilità che un utente cancelli tutti gli utenti e rimaniamo senza accesso a meno che non modifichiamo direttamente il database ed è qualcosa di inaccettabile per la nostra applicazione. Per questo creeremo di nuovo un evento speciale, in questo caso sarà il prima_distruggere, cosa fa prima di eseguire l'azione? distruggere eseguire un metodo.
Vediamo il codice:
 before_destroy: dont_destroy_dave def dont_destroy_dave raise "Non posso distruggere dave" if self.name == 'dave' end 

Quindi nella nostra azione di eliminazione cattureremo il messaggio e lo mostreremo, vediamo il codice dell'azione:
 def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: Notice] = "Utente # {user.name} cancellato" rescue flash [: Notice] = "Può ' t cancella quell'utente "end end redirect_to (: action =>: list_users) end 

Con questo finiamo il nostro tutorial sulla limitazione dell'accesso alla nostra applicazione, è importante coprire tutte le possibilità per impedire agli utenti non autorizzati di vedere o modificare la nostra parte amministrativa, questo per evitare futuri mal di testa e problemi di sicurezza che renderanno la nostra applicazione insicura e instabile.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave