Bouw onze Ruby on Rails applicatie login

Inhoudsopgave
In onze webapplicaties zullen we bijna altijd gebruikers moeten registreren, op deze manier hebben we leden van onze winkels, blogs, virtuele gemeenschappen, administratieve systemen, enz. Om de registratie effectief en nuttig te laten zijn, moeten deze gebruikers zich kunnen authenticeren om onderdelen te kunnen invoeren die zijn gemaakt voor geregistreerde gebruikers, zoals het bekijken van hun profiel, het beheren van hun berichten, het doen van aankopen, het schrijven van artikelen, enz.
De login is het essentiële onderdeel van onze applicatie, het stelt ons in staat om het privé van het openbare te scheiden, het stelt ons in staat om te weten welk profiel elke gebruiker heeft die binnenkomt en zo te beslissen wat ze kunnen zien of niet.
Om onze applicatie deze functionaliteit te laten hebben, hebben we een actie in de controller nodig waarmee we de gebruiker kunnen authenticeren door zijn gebruikersnaam en wachtwoord te vergelijken met wat we in de database hebben. Zodra dit gebeurt, moeten we in de sessie enkele waarden opslaan waarmee we te allen tijde weten wie er is ingelogd en welk profiel en permissies ze hebben, dit laatste hangt natuurlijk sterk af van het ontwerp van onze applicatie.
Inmiddels moeten we weten hoe we een controller kunnen genereren en alles wat met de console te maken heeft rails, dus we zullen de controller en de inhoud ervan direct zien, evenals de logica erachter:
 def inloggen als request.get? session [: user_id] = nul @user = User.new else @user = User.new (params [: user]) ingelogd_in_user = @ user.try_to_login if ingelogd_gebruiker session [: user_id] = ingelogd_in_gebruiker.id redirect_to (: action => "index") else flash [: notice] = "Ongeldige combinatie gebruiker / wachtwoord" end end end 

In het eerste deel met de IF conditional van onze controller vragen we om de verzoekAls het GET is, maken we de sessie schoon en maken we een nieuw gebruikerstype-object, op deze manier bereiden we de weg voor om binnen te komen. Zo niet KRIJG de verzoek we nemen aan dat het POST is, dan geven we de formulierparameters door aan ons object en noemen we de methode try_to_login, wat deze methode doet, is de vergelijking maken van gebruikersnaam en wachtwoord met wat we in de database hebben.
Tot slot kijken we met een andere conditional of de gebruiker daadwerkelijk ingelogd was, we kennen waarden toe aan de sessie en vervolgens verwijzen we de gebruiker door naar de index, anders tonen we een foutmelding met een bericht.
Zoals we in de controller hebben gezien, noemen we enkele methoden waarmee we de bijbehorende vergelijkingen kunnen maken, nu moeten we deze methoden maken en hiervoor gaan we het in het model doen, laten we eens kijken wat het bevat en waarom het bevat het:
 def self.login (naam, wachtwoord) hashed_password = hash_password (wachtwoord || "") find (: first,: conditions => ["name =? and hashed_password =?", name, hashed_password]) end def try_to_login User.login (zelf.naam, zelf.wachtwoord) end 

De methode Log in het is eenvoudig, het ontvangt twee parameters: naam en wachtwoord, dan zoekt het in de database naar deze waarden.
De methode try_to_login, wat het doet is de login-methode aanroepen, op deze manier kunnen we een reactie geven aan de gebruiker of deze al dan niet in onze database bestaat.
Ten slotte maken we onze weergave en de acties die het zal gebruiken, in het bestand app / weergaven / inloggen we zullen onze maken inloggen.rhtml en ook onze index.rhtml, de eerste lijkt veel op de constructie van de gebruiker en deze tweede zullen we nu zien.

Totaal aantal bestellingen in systeem:

Bestellingen in afwachting van verzending:


Zoals we kunnen zien, is het vrij eenvoudig, het toont gewoon de lopende bestellingen van de gebruiker, hiervoor moeten we in de controller de nodige acties opnemen:
 def index @total_orders = *****.count @pending_orders = *****.count_pending end 

Daar hadden we het resultaat kunnen zien.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave