Tunnistautuminen

varoitus, että selaat Laravelin vanhan version dokumentaatiota. Harkitse projektin päivittämistä Laravel 8: aan.x.

  • Johdanto
  • Authenticating Users
  • returning the Authenticated User
  • Protecting Routes
  • HTTP Basic Authentication
  • Password Remestions & Reset
  • Social Authentication

Introduction

Laravel tekee todennuksen toteuttamisesta hyvin yksinkertaista. Itse asiassa, lähes kaikki on määritetty sinulle kättelyssä. Authentication configuration file sijaitsee osoitteessa config/auth.php, joka sisältää useita hyvin dokumentoituja vaihtoehtoja authentication services-toimintojen säätämiseksi.

oletuksena Laravel sisältää App\User – mallin app – hakemistoosi. Tätä mallia voidaan käyttää Oletuksellisen Todennusajurin kanssa.

muista: kun rakennat tietokannan skeemaa tälle mallille, tee salasana-sarakkeesta vähintään 60 merkkiä. Varmista myös ennen kuin aloitat, että users (tai vastaava) taulukkosi sisältää nollattavan, 100 merkin merkkijonon remember_token sarakkeen. Tämä sarake käytetään tallentaa token ”Muista minut” istuntoja ylläpidetään hakemuksesi. Tämä voidaan tehdä käyttämällä $table->rememberToken(); muuttoliikkeessä. Tietenkin, Laravel 5 alukset muuttoliikkeitä näiden sarakkeet ulos laatikosta!

jos sovelluksessasi ei käytetä kaunopuheisuutta, voit käyttää database – autentikointiohjainta, joka käyttää Laravel-kyselyn rakentajaa.

todennettavissa olevat käyttäjät

Laravelin alukset, joilla on kaksi todennukseen liittyvää ohjainta poissa laatikosta. AuthController hoitaa uuden käyttäjän rekisteröinnin ja ”sisäänkirjautumisen”, kun taas PasswordController sisältää logiikan, jonka avulla nykyiset käyttäjät voivat palauttaa unohtuneet salasanansa.

jokainen näistä kontrolloijista käyttää ominaisuutta sisältääkseen tarvittavat menetelmänsä. Moniin sovelluksiin näitä ohjaimia ei tarvitse muokata lainkaan. Näiden ohjaimien antamat näkymät sijaitsevat resources/views/auth – hakemistossa. Voit vapaasti muokata näitä näkymiä miten haluat.

Käyttäjärekisteröijä

muuttaakseen lomakekenttiä, joita tarvitaan, kun uusi käyttäjä rekisteröityy sovellukseesi, voit muokata App\Services\Registrar – luokkaa. Tämä luokka on vastuussa sovelluksen uusien käyttäjien validoinnista ja luomisesta.

validator menetelmä Registrar sisältää validointisäännöt sovelluksen uusille käyttäjille, kun taas create menetelmä Registrar vastaa uusien User tietueiden luomisesta tietokantaan. Voit vapaasti muokata jokaista näistä menetelmistä haluamallasi tavalla. Registrar kutsutaan AuthController AuthenticatesAndRegistersUsers piirteen sisältämien menetelmien kautta.

manuaalinen todennus

jos et halua käyttää annettua AuthController toteutusta, sinun on hallittava käyttäjiesi todennusta suoraan Laravel-todennusluokkien avulla. Älä huoli, se on silti helppoa! Tarkastetaan ensin attempt menetelmä:

attempt menetelmä hyväksyy ensimmäiseksi argumentikseen joukon avain / arvopareja. password arvo tiivistetään. Taulukon muita arvoja käytetään käyttäjän löytämiseen tietokantataulukosta. Yllä olevassa esimerkissä käyttäjä haetaan siis email – sarakkeen arvolla. Jos käyttäjä löytyy, tietokantaan tallennettua hashed-salasanaa verrataan taulukon kautta menetelmälle siirrettyyn hashed password – arvoon. Jos kaksi hashed-salasanaa täsmäävät, käyttäjälle aloitetaan uusi todennettu istunto.

attempt menetelmä palaa true, jos autentikointi onnistui. Muussa tapauksessa false palautetaan.

Huom: tässä esimerkissä email ei ole pakollinen vaihtoehto, sitä käytetään vain esimerkkinä. Sinun pitäisi käyttää mitä sarakkeen nimi vastaa ”käyttäjätunnus” tietokannassa.

intended redirect-toiminto ohjaa käyttäjän URL-osoitteeseen, jota hän yritti käyttää ennen kuin autentikointisuodatin nappaa hänet. Tälle menetelmälle voidaan antaa vara-URI, jos aiottua käyttötarkoitusta ei ole saatavilla.

Todennettaessa käyttäjä ehdoilla

voit myös lisätä lisäehtoja todennuskyselyyn:

if (Auth::attempt()){ // The user is active, not suspended, and exists.}

määritetään, onko käyttäjä todennettu

selvittääksesi, onko käyttäjä jo kirjautunut sovellukseesi, voit käyttää check – menetelmää:

if (Auth::check()){ // The user is logged in...}

käyttäjän todentaminen ja” muistaminen ”

jos haluat tarjota” remember me ” – toiminnallisuuden sovelluksessasi, voit antaa boolean-arvon toisena argumenttina attempt – menetelmälle, joka pitää käyttäjän todennettuna loputtomiin, tai kunnes käyttäjä kirjautuu manuaalisesti ulos. users – taulukkoon on tietenkin sisällytettävä merkkijono remember_token sarake, johon tallennetaan ”Muista minut” – merkki.

if (Auth::attempt(, $remember)){ // The user is being remembered...}

jos olet” muistamassa ”käyttäjiä, voit käyttää viaRemember – menetelmää selvittääksesi, oliko käyttäjä todennettu ”Muista minut” – evästeen avulla:

if (Auth::viaRemember()){ //}

todennetaan käyttäjätunnuksella

kirjataksesi käyttäjän sovellukseen tunnuksellaan, käytä loginUsingId – menetelmää:

Auth::loginUsingId(1);

käyttäjätunnusten validointi ilman kirjautumista

validate menetelmän avulla voit vahvistaa käyttäjän tunnistetiedot kirjautumatta itse sovellukseen:

if (Auth::validate($credentials)){ //}

käyttäjän kirjaaminen sisään yhtä pyyntöä varten

voit myös käyttää once – menetelmää käyttäjän kirjaamiseksi sovellukseen yhtä pyyntöä varten. Istuntoja tai evästeitä ei käytetä:

if (Auth::once($credentials)){ //}

manuaalisesti kirjaaminen käyttäjän

jos sinun on kirjattava olemassa oleva käyttäjä-instanssi sovellukseesi, voit soittaa login – metodiin käyttäjän instanssin kanssa:

Auth::login($user);

tämä vastaa käyttäjän kirjautumista tunnuksilla attempt – menetelmällä.

käyttäjän kirjaaminen ulos sovelluksesta

Auth::logout();

tietenkin, jos käytät sisäänrakennettuja Laravel-autentikointiohjaimia, laatikosta löytyy ohjainmenetelmä, joka hoitaa käyttäjien kirjaamisen ulos sovelluksesta.

Autentikaatiotapahtumat

kun attempt – menetelmä kutsutaan, auth.attempt – tapahtuma laukaistaan. Jos tunnistautumisyritys onnistuu ja käyttäjä on kirjautunut sisään, myös auth.login – tapahtuma saa potkut.

Authenticated User

kun käyttäjä on todennettu, on useita tapoja saada instanssi käyttäjästä.

ensimmäinen, voit käyttää käyttäjää Auth julkisivusta:

toinen, voit käyttää todennettua käyttäjää Illuminate\Http\Request instanssin kautta:

kolmanneksi, voit kirjoittaa vihjeen Illuminate\Contracts\Auth\Authenticatable sopimuksesta. Tämä tyyppi-vihje voidaan lisätä ohjaimen rakentaja, ohjain menetelmä, tai mikä tahansa muu rakentaja luokan ratkaista palvelun säiliö:

reittien suojaamista

Reittiväliohjelmaa voidaan käyttää siten, että vain todennetut käyttäjät pääsevät tietylle reitille. Laravel tarjoaa oletusarvoisesti auth välisarjan, ja se on määritelty app\Http\Middleware\Authenticate.php. Sinun tarvitsee vain liittää se reittimääritykseen:

HTTP Basic Authentication

HTTP Basic Authentication tarjoaa nopean tavan todentaa sovelluksen käyttäjät perustamatta erillistä ”login” – sivua. Aloita liittämällä auth.basic välisarja reitillesi:

suojaamalla reittiä HTTP Basic

Route::get('profile', );

oletusarvoisesti basic middleware käyttää email – palstaa käyttäjärekisterissä ”käyttäjätunnuksena”.

Stateless HTTP Basic Filter

voit myös käyttää HTTP Basic Authentication-toimintoa asettamatta käyttäjätunnusevästettä istunnossa, mikä on erityisen hyödyllistä API-todennuksessa. Määrittele välisarja, joka kutsuu onceBasic – menetelmää:

public function handle($request, Closure $next){ return Auth::onceBasic() ?: $next($request);}

jos käytät PHP FastCGI, HTTP Basic todennus ei välttämättä toimi oikein kättelyssä. .htaccess – tiedostoon lisätään seuraavat rivit:

RewriteCond %{HTTP:Authorization} ^(.+)$RewriteRule .* - 

Salasanamuistutukset & Nollaa

malli & taulukko

useimmat verkkosovellukset tarjoavat käyttäjille tavan nollata unohtuneet salasanansa. Sen sijaan, että pakottaisit sinut toteuttamaan tämän uudelleen jokaisessa sovelluksessa, Laravel tarjoaa käteviä menetelmiä salasanamuistutusten lähettämiseen ja salasanan nollaamiseen.

aloittaaksesi tarkista, että User – mallisi toteuttaa Illuminate\Contracts\Auth\CanResetPassword – sopimuksen. Kehyksen mukana tuleva User – malli toki jo toteuttaa tämän rajapinnan, ja käyttää Illuminate\Auth\Passwords\CanResetPassword – ominaisuutta sisällyttääkseen rajapinnan toteuttamiseen tarvittavat menetelmät.

kun luodaan Muistutustaulukon Siirtymä

, on luotava taulukko salasanan nollauspolettien tallentamiseksi. Tämän taulukon migraatio sisältyy Laravel Out of the Boxiin, ja se sijaitsee database/migrations – hakemistossa. Joten sinun tarvitsee vain muuttaa:

php artisan migrate

Salasanamuistutusohjain

Laravelissa on myös Auth\PasswordController, joka sisältää käyttäjän salasanojen nollaamiseen tarvittavan logiikan. Olemme jopa tarjota näkymät pääset alkuun! Näkymät löytyvät resources/views/auth – hakemistosta. Voit vapaasti muokata näitä näkymiä oman sovelluksesi suunnittelun mukaan.

käyttäjä saa sähköpostin, jossa on linkki, joka viittaa PasswordController: n getReset – menetelmään. Tämä menetelmä tekee salasanan nollauslomakkeen ja käyttäjät voivat nollata salasanansa. Kun salasana on nollattu, käyttäjä kirjautuu automaattisesti sovellukseen ja ohjataan numeroon /home. Voit muokata uudelleenohjauksen jälkeistä sijaintia määrittelemällä redirectTo ominaisuuden PasswordController:

protected $redirectTo = '/dashboard';

Huomautus: oletusarvoisesti salasanan palautus tokens vanhenee tunnin kuluttua. Voit muuttaa tätä reminder.expire – valinnalla config/auth.php – tiedostossasi.

sosiaalinen todennus

tyypillisen, lomakepohjaisen todennuksen lisäksi Laravel tarjoaa myös yksinkertaisen ja kätevän tavan todentaa OAuth-palveluntarjoajien kanssa Laravel Socialitea käyttäen. Socialite tukee tällä hetkellä tunnistautumista Facebookilla, Twitterillä, Googlella, GitHubilla ja Bitbucketilla.

aloittaaksesi Socialiten, sisällytä paketti composer.json tiedostoosi:

"laravel/socialite": "~2.0"

rekisteröi seuraavaksi Laravel\Socialite\SocialiteServiceProvider config/app.php asetustiedostoon. Voit myös rekisteröidä Julkisivun:

'Socialize' => 'Laravel\Socialite\Facades\Socialite',

sinun täytyy lisätä tunnukset OAuth-palveluihin, joita sovelluksesi käyttää. Nämä tunnistetiedot tulee sijoittaa config/services.php asetustiedostoon ja käyttää avainta facebook, twitter, google, tai github riippuen siitä, mitä palveluntarjoajia hakemuksesi vaatii. Esimerkiksi:

'github' => ,

seuraavaksi olet valmis todentamaan käyttäjät! Tarvitset kaksi reittiä: yksi käyttäjän uudelleenohjaamiseen OAuth-palveluntarjoajalle ja toinen puhelun vastaanottamiseen palveluntarjoajalta todennuksen jälkeen. Tässä esimerkki Socialize julkisivu:

redirect – menetelmä huolehtii käyttäjän lähettämisestä OAuth-palveluntarjoajalle, kun taas user – menetelmä lukee saapuvan pyynnön ja hakee käyttäjän tiedot palveluntarjoajalta. Ennen käyttäjän uudelleenohjausta voit myös asettaa ”scopes” pyynnöstä:

return Socialize::with('github')->scopes()->redirect();

kun sinulla on käyttäjäesimerkki, voit napata muutaman tarkemman tiedon käyttäjästä:

hakee käyttäjän tietoja