Bentornati in questa lezione vedremo del nuovo materiale divertente.
Combineremo il nostro modello utente con l'autenticazione che abbiamo coperto con i campeggi per assicurarci che un utente non
possa cancellare il campeggio che non ha creato o un utente non può modificare un campeggio che lui
o lei non ha creato.
E questo è qualcosa chiamato autorizzazione.
Quindi l'autenticazione e l'autorizzazione sono diverse per autenticazione si intende scoprire se qualcuno è chi
dicono di essere.
Bene, l'autorizzazione è una volta che sai chi è qualcuno.
Capisci cosa possono fare.
Quindi pensaci come permessi.
Cosa può fare qualcuno con ciò che è autorizzato a fare con la loro autorizzazione di sicurezza nella nostra applicazione.
Quindi se non possiedi un campeggio se non hai lo stesso io. D. come autore del campeggio, non
sarai in grado di aggiornarlo o cancellarlo.
Cominciamo in modo semplice e lavoriamo con esso in modo tale che non puoi darti il ​​modulo di modifica a meno che
non possiedi il campeggio.
Quindi andiamo alle nostre rotte del campeggio proprio qui.
E quello che vogliamo fare è se provi ad andare al percorso del campeggio o ad aggiornare ed
eventualmente eliminare tutti e tre, dobbiamo avere la stessa logica in cui controlliamo.
L'attuale utente I. D. abbinare l'ID dell'autore per quel campeggio.
Quindi ricorda che questo è come appare la nostra struttura dati dove tiriamo su il modello del campeggio.
Abbiamo un autore per ogni campeggio e c'è un I. D. sarà un I. D. per un utente fa riferimento
a un particolare oggetto dell'utente I. D. e poi abbiamo un utente, ovviamente, che ha un oggetto I. D. Non è specificato qui ma
ogni utente ha un I. D. e stiamo andando a confrontare gli utenti attualmente registrati I. D. all'autore del
punto ID del campeggio, quindi possiamo farlo abbastanza facilmente se ci avviciniamo al nostro.
Inizieremo da lì.
E la prima cosa che vogliamo fare è controllare qualcuno che abbia effettuato l'accesso.
E se no, reindirizzeremo l'estate.
Se un utente ha effettuato l'accesso, l'utente possiede il campeggio.
E in tal caso lasceremo che l'utente esegua questo codice per trovare il mio ID ed eliminare tutto.
Altrimenti reindirizzeremo anche.
Quindi riempiamo questo per iniziare a vedere se qualcuno ha effettuato l'accesso.
Possiamo semplicemente scrivere se richiesto è autenticato.
Potremmo anche usare il mezzo in cui abbiamo già definito qui l'accesso.
Ti mostrerò in un momento perché non lo faremo.
La risposta breve è che stiamo definendo il nostro middleware e solo un po '.
Quindi combineremo questa funzionalità al posto di questo middleware.
Quindi se una richiesta viene autenticata, se è così, allora siamo a posto.
Se non è il caso, facciamo un log costante per iniziare.
Devi effettuare il login per farlo e poi faremo una risposta.
E facciamo solo un invio per iniziare la risposta e manderemo questo in realtà.
Quindi, se vediamo che sapremo che non siamo loggati e la prima cosa funzionerà.
Quindi copiamo questo codice all'interno dell'istruzione if e indentato correttamente.
OK.
Quindi dobbiamo essere loggati.
Quale non è nulla di nuovo, abbiamo già scritto codice per farlo.
Quindi potresti pensare a dove sto andando in questo modo in un modo strano che siamo in qualche modo.
Ma vedrai tra un istante perché.
Proviamoci però.
Salva avvia il server.
E quando avvio non sono loggato.
Nessuno è loggato
Quindi se provo ad andare a tagliarlo, mi
dice che devi essere loggato per farlo.
Quindi la nostra prima parte sta funzionando bene.
Poi, una volta che siamo bloccati, avremo un'altra dichiarazione qui che è dove controllerà.
L'utente possiede il campeggio.
E il modo in cui lo faremo sarà piuttosto semplice.
La prima cosa che dobbiamo fare è trovare il campeggio che abbiamo già fatto qui.
E poi, una volta trovato, dobbiamo verificare se l'ID dell'autore su quel campeggio corrisponde
all'utente corrente che richiede quell'utente.
Allora siamo a posto.
Quindi all'interno di qui è dove facciamo effettivamente l'utente del campeggio.
Terremo il primo bit per verificare se c'è un errore se non ci sono errori, quindi controlleremo.
e B se l'ID autore del punto campground come si potrebbe pensare che potremmo fare questo.
Fa un utente sul campeggio perché ciò significa che esiste un campeggio e quindi avremo una dichiarazione if
È uguale a uguale a
Richiedi l'ID di sottolineatura del punto utente.
Quindi lascia che ti mostri solo cosa intendo, facciamo un id di pensiero dell'autore del campo di log di contatto e poi di
seguito cancelleremo quella richiesta di log che l'utente esegue l'underscore ID.
Quindi commenta la dichiarazione if.
Quindi vedremo queste due linee.
login, naturalmente, se cerco di aggiornarmi adesso senza essere loggato, abbiamo un errore.
Dovrò effettuare il
Ma se effettuo il login ora ho
accesso a Potato Head e poi torno al granito.
Abbiamo un problema.
Sembra che vediamo.
Beh, quello era sciocco e cercare di cancellare come il campeggio al campeggio Arthur non esiste.
È stato trovato campeggio.
Quindi proverò di nuovo riavviare il server.
La prima volta siamo freschi.
Sai dirci che devi essere loggato ancora.
Quindi di nuovo ci colleghiamo a Potato Head.
Parola d'ordine.
OK.
Ora se provo a
farlo, dai un'occhiata a ciò che vediamo qui.
La prima cosa che stampiamo assomiglia a questo.
In questo modo viene trovato il campo Arthur ID e quindi abbiamo richiesto che i dati dell'utente I. D. e sembrano
identici.
E quando vengono stampati sono identici.
Ma dietro le quinte non sono in realtà la stessa cosa quindi richiede che id utente il suo ID di sottolineatura è
una stringa trovata autore campo ID punto è un oggetto è un oggetto mangusta.
E questo è solo un problema.
Mi dimentico di tanto in tanto è davvero frustrante perché sembrano uguali quando si tenta di
eseguire il debug ma la verità è che il primo non è in realtà una stringa, è un oggetto mangusta.
Quello che abbiamo stampato.
Vediamo una stringa ma questa è solo la versione a due corde.
Dietro le quinte non è una stringa.
E questa è una stringa.
Quindi quando li confrontiamo non funzionerà.
Quindi piuttosto che confrontarli con triple equals o double equals, invece, quello che possiamo fare è usare un
metodo che mangusta ci dà per questo scopo.
Quindi quello che facciamo è scrivere un'istruzione IF piuttosto che controllare i campeggi.
L'ID autore Dodd triplica la richiesta all'ID utente.
Usiamo dot equals.
Eccoci.
E ora la nostra dichiarazione IF dovrebbe funzionare, tranne per il fatto che questo deve essere trovato di nuovo in
campeggio, cosa sta tornando al database che stiamo trovando usando quell'ID.
Quindi scopriamo che con l'ID basato sulla rotta, controlliamo se l'ID autore su quel
particolare campeggio trovato è uguale all'ID utente attualmente connesso.
Se è così, faremo una cosa.
Altrimenti faremo qualcos'altro.
Quindi, se questo è il caso, faremo qui la pagina del campeggio di rendering della pagina del campeggio di modifica con il
campeggio trovato.
Altrimenti faremo una pausa mandare.
Non hai il permesso di farlo, naturalmente questo alla fine cambierà o non sarà solo un punto rosso,
ma avremo un messaggio reale che verrà visualizzato.
ad andare
alla nostra applicazione per andare alla pagina di uno spettacolo, per prima cosa se provo a modificarla adesso devo essere loggato.
Quindi proviamo
Ora, se accedo o mi iscrivo come qualcuno diverso da Potato Head, farò la
testa di pomodoro e cerco di modificare ciò che vedrai con speranza.
Eccoci, non ti ho il permesso di farlo.
Ora se torniamo indietro e ci disconnettiamo come Potato Head
e proviamo di nuovo tutto, provo a modificare.
Ho il permesso.
E finisco qui.
Quindi sta funzionando.
Che è grandioso.
Ora quello che faremo è in realtà il refactoring in una funzione separata.
Gran parte di questa logica la chiamerà qualcosa di simile.
Controlla il campeggio dell'utente o assicurati che l'utente del campeggio stia verificando che l'utente attualmente
connesso corrisponda a questo campeggio specifico.
E il motivo per cui lo sposteremo nel middleware è che lo useremo in edit.
Vogliamo anche usarlo in aggiornamento.
Non vogliamo che qualcuno sia in grado di inviare una richiesta se non ha effettuato l'accesso.
Quindi, anche se di nuovo solo usando il browser.
L'unico modo per ottenere visivamente l'aggiornamento per inviare dati è l'utilizzo di questo modulo.
Potresti usare il postino per inviare una richiesta dal postino e non essere autenticato.
Quindi vogliamo la stessa logica qui e vogliamo fare la stessa cosa per eliminare.
Quindi non vogliamo che tu sia in grado di cancellare qualcosa di un campeggio se non hai effettuato l'accesso.
E se non lo possiedi.
Quindi quello che faremo è scrivere un middleware che copieremo questo codice per ora.
Lascerò lì ma ora andremo giù solo con gli altri middleware.
Bene, l'ultimo ha chiamato la proprietà del campeggio assegno proprio così.
E poi incolleremo questo codice e avremo un piccolo lavoro da fare qui.
Ma l'obiettivo finale è che nella nostra modifica dovremmo essere in grado di aggiungere il nostro middleware qui controllare la proprietà del campeggio.
Dovremmo essere in grado di farlo aggiornare.
E anche su delete ma inizieremo con esso e quello che vogliamo fare è controllare.
Per prima cosa è necessario aggiungere la risposta alla richiesta e successivamente ricordare che il middleware è impostato per la risposta alla
richiesta successiva.
Quindi se l'utente è attualmente loggato.
Continua a muoverti se non hai effettuato il login, piuttosto che fare una pausa, mandaci.
Per ora faremo un reindirizzamento di ristoranti e non abbiamo ancora visto questo.
Possiamo eseguire il reindirizzamento verso il redstart e questo porterà l'utente indietro nel punto da cui è venuto.
La pagina precedente in cui si trovavano e molto presto mostrerà come possiamo inviare un messaggio.
Bene, il messaggio che vogliamo inviare è qualcosa di simile Non hai effettuato l'accesso o devi essere
autorizzato a farlo, ma per ora lo lasciamo così.
Quindi, se sono collegati, troveremo il campeggio.
Se si verifica un errore, ti reindirizzeremo anche di nuovo.
Ancora una volta questo errore si verifica se il campeggio non può essere trovato per
qualche motivo o se il database non è collegato o è una cosa strana in genere che in realtà non vedremmo altro se
il campeggio corrisponde all'ID utente delle richieste.
Quindi, se l'utente che è come proprietario di questo, invece di eseguire il rendering dei campeggi perché
non vogliamo sempre che questo middleware esegua il rendering, ciò che vogliamo è passare al resto del codice
in delete o passare al codice un aggiornamento o una modifica.
Quindi è qui che faremo.
Altrimenti se non lo possiedono faremo un reind reindirizzamento.
Grande.
Quindi proviamo a salvarlo e faremo un aggiornamento del nostro percorso di modifica qui.
Possiamo sistemarlo molto, quindi non abbiamo bisogno di fare nulla di tutto questo eccetto per il fatto che vogliamo
trovare il campeggio e tutto ciò che faremo se troveremo un campeggio non è necessario controllarlo partite più perché lo stiamo facendo nel
mezzo in cui così tutto ciò che vogliamo fare è trovare un campeggio in grado di
sbarazzarsi di tutto questo.
'.
Quasi tutto il formato Office è corretto, quindi uscirà un po
Eccoci.
Quindi, poiché abbiamo aggiunto il tasso di proprietà del campeggio di Scheck, qui tutto ciò che stiamo facendo ora è se
arrivassimo a questo punto significa che abbiamo già controllato la proprietà del campeggio e che ce l'abbiamo fatta.
Altrimenti se ci fosse un problema verremmo reindirizzati che vediamo con l'errore che sto ottenendo
è un piccolo errore di sintassi qui che in qualche modo ho cancellato la mia dichiarazione di funzione qui e puoi vedere
che si lamenta che non stiamo gestendo l'errore che potremmo gestire
se arriviamo a questo punto non ci dovrebbe essere un errore nel trovare l'ID PI perché lo abbiamo fatto qui.
Ma la cosa è che
E se funziona qui, allora dovremmo essere bravi ad andare comunque.
Quindi proviamo a vedere se abbiamo problemi.
Fondamentalmente abbiamo semplicemente spostato il nostro codice in una funzione separata.
E ricorda che viene chiamato un middleware Prima di arrivare al giusto handler.
OK.
Quindi facciamo un tentativo.
Per prima cosa torniamo indietro e diciamo prova e clicca su modifica.
Non ho effettuato l'accesso.
Dovrebbe reindirizzare a me dov'ero