3

我编写了一个自定义用户提供程序来在外部服务器上的外部 API 中验证我的用户。

自定义用户提供者:

<?php
   namespace App\Auth;
   use Illuminate\Auth\GenericUser; 
   use Illuminate\Contracts\Auth\Authenticatable as Authenticatable; 
   use Illuminate\Contracts\Auth\UserProvider;
   use Psr\Http\Message\ResponseInterface;
   use Illuminate\Http\Request;
   use App\XXX\Facades\XXXX;
   use Log;
class CustomUserProvider implements UserProvider {
public $errors = []; 

public function getErrorMessages ( ) {
    return $this->errors;
}

public function retrieveById($identifier)
{
    // TODO: Implement retrieveById() method.

}

public function retrieveByToken($identifier, $token)
{
    // TODO: Implement retrieveByToken() method.
    return null;
}

public function updateRememberToken(Authenticatable $user, $token)
{
    // TODO: Implement updateRememberToken() method.

}

public function retrieveByCredentials(array $credentials)
{
    $response =APIService::get( 'GET', $credentials, 'tokens');

    if ( array_key_exists('code', $response) ) {
        /* Exception o Credentials Error */
        $this->errors = $response;
        return null;

    } else {

        $apiCredentials = json_decode( $response->getBody(), true );

        if( $apiCredentials ) {
            $attributes = array (
                'id' => 1,
                'name' => 'Name',
                'lastname' => 'LastName',
                'email' => 'email@email.com'
            );

            $user = new GenericUser( $attributes );
            return $user;
        }
    }

   return null;
}

public function validateCredentials(Authenticatable $user, array $credentials)
{
    if( $user->email == $credentials['email'] ) {

        return true;
    }
    return false;

}
}

问题是用户如果登录正常,但在下一个请求中 Auth::user() 返回 false。中间件 Auth:user() 中的调试也返回 false。

4

0 回答 0