Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在两个laravel项目之间使用API手动登录?_Php_Laravel - Fatal编程技术网

Php 如何在两个laravel项目之间使用API手动登录?

Php 如何在两个laravel项目之间使用API手动登录?,php,laravel,Php,Laravel,我有两个基于Laravel的项目,我想使用第一个项目提供的API登录,并在第二个项目中使用此身份验证 在第二个项目的LoginController中: 公共功能登录(请求$Request) { $login\u response=Http::post({first\u project\u login\u api})[ “数据”=>[ “email”=>$request->input('email'), “密码”=>$request->input('password') ] ]); 如果($th

我有两个基于Laravel的项目,我想使用第一个项目提供的API登录,并在第二个项目中使用此身份验证

在第二个项目的
LoginController
中:


公共功能登录(请求$Request)
{
$login\u response=Http::post({first\u project\u login\u api})[
“数据”=>[
“email”=>$request->input('email'),
“密码”=>$request->input('password')
]
]);
如果($this->attemptLogin($login\u response)){
返回$this->sendLoginResponse($request);
}
}
受保护的函数尝试登录(响应$Response)
{
返回$response->object()->status==200;
}
在第二个项目中,我不需要数据库,因为我想在第一个项目中进行身份验证,但似乎不可能

实际上,我需要知道如何覆盖
LoginController
中的
attemptLogin()
函数


如果有人能给我建议,我将不胜感激 我不会在应用程序之间使用登录,而是使用
API
键。最简单的入门方法是使用simple

首先为用户表创建迁移

Schema::table('users', function ($table) {
    $table->string('api_token', 80)->after('password')
        ->unique()
        ->nullable()
        ->default(null);
});
要获取密钥,请在Tinker、command或creation中为用户设置密钥

$user->api_token = Str::random(60);
$user->save();
使用中间件保护您的API路由

Route::middleware('auth:api')->group(function() {
    // your routes
});
调用api非常简单

response = $client->request('POST', $yourRoute, [
    'headers' => [
        'Authorization' => 'Bearer ' . $yourToken,
        'Accept' => 'application/json',
    ],
]);

这是一个相当基本的设置,对于生产或前进,您应该查看或。这只是一个好的开始,我觉得您是基于您的问题的。

一个选项是创建您自己的用户提供者,然后将与其他项目进行身份验证的逻辑放在validateCredentials方法中。类似的问题,请参见我的答案。