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ä
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
– valinnallaconfig/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ä: