<code>Auth::attempt(array('username' => $username, 'password' => $password),false) </code>
Das Passwort in diesem Ding muss mit einer von Ihnen definierten Methode verschlüsselt werden
<code>Auth::attempt(array('username' => $username, 'password' => $password),false) </code>
Das Passwort in diesem Ding muss mit einer von Ihnen definierten Methode verschlüsselt werden
Das Dokument ist zwar noch nicht geschrieben, aber wir können uns den Quellcode ansehen
Die Implementierung der Auth-Methode befindet sich in IlluminateAuthGuard
<code> /** * Attempt to authenticate a user using the given credentials. * * @param array $credentials * @param bool $remember * @param bool $login * @return bool */ public function attempt(array $credentials = [], $remember = false, $login = true) { $this->fireAttemptEvent($credentials, $remember, $login); $this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials); // 看这里 // If an implementation of UserInterface was returned, we'll ask the provider // to validate the user against the given credentials, and if they are in // fact valid we'll log the users into the application and return true. if ($this->hasValidCredentials($user, $credentials)) { if ($login) { $this->login($user, $remember); } return true; } return false; } /** * Determine if the user matches the credentials. * * @param mixed $user * @param array $credentials * @return bool */ protected function hasValidCredentials($user, $credentials) { // 执行认证驱动器的validCredentials方法 return ! is_null($user) && $this->provider->validateCredentials($user, $credentials); }</code>
Standardmäßig wird eloquent als Authentifizierungstreiber verwendet. Schauen Sie sich also die Implementierung im Inneren an IlluminateAuthEloquentUserProvider
<code> public function validateCredentials(UserContract $user, array $credentials) { $plain = $credentials['password']; return $this->hasher->check($plain, $user->getAuthPassword()); }</code>
Wenn Sie also die Verifizierungslogik ändern möchten, können Sie den ursprünglichen Treiber erben und dann die Logik in „validateCredentials“ neu schreiben
<code>class TestUserProvider extend EloquentUserProvider { public function validateCredentials(UserContract $user, array $credentials) { $plain = $credentials['password']; return md5($plain) == $user->getAuthPassword(); } }</code>
Stellen Sie abschließend den Treiber ein. Es wird empfohlen, boot() von AppServiceProvider zu laden
<code>Auth::setProvider(new TestUserProvider());</code>
Es steht im Dokument! Seien Sie nicht zu faul, die Dokumentation zu lesen. Die Fragen, die Sie kürzlich gestellt haben, stehen alle in der Dokumentation.