重定向后丢失Laravel自定义身份验证

时间:2019-03-28 09:37:52

标签: laravel

我使用的是laravel,但我要添加我的自定义用户提供程序,以及注册该用户提供程序的自定义身份验证提供程序。

当我致电Auth::Attempt时,它可以工作并返回true,然后致电Auth::Check返回trueAuth::User在那,但是当我导航到另一个页面上,authfalse

我再次检查了会话是否运行正常,我的路由已添加到网络组:

auth.php

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ]
    ],
'providers' => [
        'users' => [
            'driver' => 'custom_provider',
            'model' => App\Models\User::class,
        ]
    ],

用户模型

<?php

namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable  
{

    public $incrementing = false;
    protected $primaryKey = null;

    protected $fillable = [
        'name', 'email', 'password','mobile','token'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

用户提供商

public function retrieveByCredentials(array $credentials)
    {
        $client = new Client();
        $options = [
            'json' => [
                'mobile' => $credentials['email'],
                'email' => $credentials['email'],
                'password' => $credentials['password'],
            ],
        ];
        $loginRes= $client->request('POST','http://localhost:1235/users/login',$options);
        $loginResponse=json_decode($loginRes->getBody()->getContents(),true);
        if($loginResponse['success'])
        {
            $credentials['token']=$loginResponse['token'];
            $credentials['email']=$loginResponse['email'];
            $credentials['mobile']=$loginResponse['mobile'];
            $credentials['name']=$loginResponse['name'];
            $credentials['remember_token']=$loginResponse['remember_token'];
        }
        else {
            $credentials['token']='token';
            $credentials['remember_token']='remember_token';
        }
        return new $this->model($credentials);
    }

    public function validateCredentials(Authenticatable $user, array $credentials)
    {
        // return $user->token != 'token';
        return true;
    }

有什么想法吗?

PHP 7.2和7.3版本

0 个答案:

没有答案