Authentification de connexion de l'utilisateur du framework Laravel

巴扎黑
Libérer: 2023-03-16 08:22:02
original
1890 Les gens l'ont consulté

Cet article présente principalement la méthode de mise en œuvre de l'authentification de connexion utilisateur du framework Laravel. Il analyse les principes, les méthodes de mise en œuvre et les précautions associées de l'authentification de connexion utilisateur du framework Laravel sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Cet article décrit la méthode d'implémentation de l'authentification de connexion utilisateur dans le framework Laravel à travers des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Pour détecter si l'utilisateur est connecté à Laravel, il y a le code suivant :

if ( !Auth::guest() )
{
  return Redirect::to('/dashboard');
}
Copier après la connexion
Comment ça va

appelé ? Auth::guest

Laravel utilise le mode Facade. Les classes de façade pertinentes sont définies dans le dossier laravel/framework/src/Illuminate/Support/Facades :

class Auth extends Facade {
  /**
   * Get the registered name of the component.
   *
   * @return string
   */
  protected static function getFacadeAccessor() { return 'auth'; }
}
Copier après la connexion
framework laravel, le mode Façade utilise la réflexion et les méthodes associées appellent en fait les méthodes dans

app['auth'] Quand app['auth'] a-t-il été créé ? > méthode S'enregistrera :

AuthServiceProvider::register Alors pourquoi est-il finalement transféré vers ? Regardez la pile :

$this->app->bindShared('auth', function($app)
{
  // Once the authentication service has actually been requested by the developer
  // we will set a variable in the application indicating such. This helps us
  // know that we need to set any queued cookies in the after event later.
  $app['auth.loaded'] = true;
  return new AuthManager($app);
});
Copier après la connexion

Regardez le code du pilote :

Illuminate\Support\Facades\Auth::guest()
Illuminate\Support\Facades\Facade::__callStatic
Illuminate\Auth\AuthManager->guest()
Illuminate\Support\Manager->__call
public function __call($method, $parameters)
{
    return call_user_func_array(array($this->driver(), $method), $parameters);
}
Copier après la connexion

Non La méthode

getDefaultDrive
public function driver($driver = null)
{
    $driver = $driver ?: $this->getDefaultDriver();
    // If the given driver has not been created before, we will create the instances
    // here and cache it so we can return it next time very quickly. If there is
    // already a driver created by this name, we'll just return that instance.
    if ( ! isset($this->drivers[$driver]))
    {
      $this->drivers[$driver] = $this->createDriver($driver);
    }
    return $this->drivers[$driver];
}
Copier après la connexion

sera appelée finalement, le pilote configuré dans le fichier de configuration sera appelé s'il est configuré avec

<🎜. >
/**
* Get the default authentication driver name.
*
* @return string
*/
public function getDefaultDriver()
{
    return $this->app[&#39;config&#39;][&#39;auth.driver&#39;];
}
Copier après la connexion
, puis

sera appelé

&#39;driver&#39; => &#39;eloquent&#39;
Copier après la connexion
Donc

appelle finalement la méthode

public function createEloquentDriver()
{
    $provider = $this->createEloquentProvider();
    return new Guard($provider, $this->app[&#39;session.store&#39;]);
}
Copier après la connexion

La logique ici obtient d'abord les informations utilisateur de la session L'étrange. le problème est que la session enregistre uniquement l'ID utilisateur, puis obtient cet ID pour obtenir les informations utilisateur de la base de données Auth::guestGuard::guest

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal