Bygg vår Ruby on Rails -inloggning

Innehållsförteckning
I våra webbapplikationer kommer vi nästan alltid att behöva registrera användare, på så sätt kommer vi att ha medlemmar i våra butiker, bloggar, virtuella gemenskaper, administrativa system etc. För att registreringen ska vara effektiv och användbar måste dessa användare kunna autentisera sig själva för att kunna skriva in delar som har skapats för registrerade användare, till exempel att titta på deras profil, hantera sina meddelanden, göra inköp, skriva artiklar etc.
Inloggningen är den viktiga delen av vår applikation, den tillåter oss att skilja det privata från det offentliga, det låter oss veta vilken profil varje användare som går in har och därmed bestämma vad de kan se eller inte.
För att vår applikation ska ha denna funktionalitet behöver vi en åtgärd i handkontrollen som gör att vi kan autentisera användaren genom att jämföra hans användarnamn och lösenord med vad vi har i databasen, så när detta händer måste vi spara i sessionen några värden som tillåter oss att alltid veta vem som är inloggad och vilken profil och behörighet de har, naturligtvis beror det senare mycket på utformningen av vår applikation.
Vid det här laget måste vi veta hur vi genererar en controller och allt som rör konsolen skenor, så vi kommer att se handkontrollen och dess innehåll direkt, liksom logiken bakom den:
 def logga in om request.get? session [: user_id] = noll @user = User.new else @user = User.new (params [: user]) logged_in_user = @user.try_to_login if logged_in_user session [: user_id] = logged_in_user.id redirect_to (: action => "index") else flash [: notice] = "Ogiltig kombination av användare / lösenord" slutet slut 

I den första delen med IF -villkoret för vår controller ber vi om begäranOm det är GET, städar vi sessionen och skapar ett nytt användartypsobjekt, på så sätt förbereder vi vägen för att komma in. Om inte Hämta begäran vi antar att det är POST, sedan skickar vi formparametrarna till vårt objekt och kallar sedan metoden try_to_login, vad denna metod gör är att göra jämförelser av användarnamn och lösenord mot vad vi har i databasen.
Slutligen med ett annat villkor ser vi om användaren faktiskt var inloggad, vi tilldelar värden till sessionen och sedan omdirigerar vi användaren till indexet, annars visar vi ett fel med ett meddelande.
Som vi såg i handkontrollen kallar vi några metoder som gör att vi kan göra motsvarande jämförelser, nu är det vi behöver för att skapa dessa metoder och för detta ska vi göra det i modellen, låt oss se vad den innehåller och varför den innehåller den:
 def self.login (namn, lösenord) hashed_password = hash_password (lösenord || "") hitta (: först ,: villkor => ["name =? och hashed_password =?", name, hashed_password]) end def try_to_login User.login (self.name, self.password) slut 

Metoden logga in det är enkelt, det tar emot två parametrar: namn och lösenord, sedan frågar det mot databasen efter dessa värden.
Metoden try_to_login, vad den gör är att åberopa inloggningsmetoden, på detta sätt kan vi ge ett svar till användaren om den finns eller inte i vår databas.
Slutligen skapar vi vår uppfattning och de åtgärder som den kommer att använda, i filen app / visningar / inloggning vi kommer att skapa vår login.rhtml och även vår index.rhtml, den första är ganska lik användarens konstruktion och den andra kommer vi att se nu.

Totala order i systemet:

Beställningar väntar på leverans:


Som vi kan se är det ganska enkelt, det kommer helt enkelt att visa användarens väntande beställningar, för detta i kontrollen måste vi införliva de nödvändiga åtgärderna:
 def index @total_orders = *****. count @pending_orders = *****. count_pending end 

Där skulle vi ha sett resultatet.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave