我们有一个以 React 作为前端的 Laravel 项目。基本上react是在laravel项目内部,我们使用php artisan预设react
来添加它。
由于此应用程序需要身份验证,我们使用自定义 Laravel 身份验证来授予用户访问权限。然后,当身份验证正确时,我们将用户重定向到将由react和react router管理的路由。 问题是我们需要从同一个应用程序使用我们的 API 端点,并且这些端点必须受到保护。 laravel Auth 在那里不起作用, session 信息不会在每个请求上发送。我试过https://laravel.com/docs/5.7/authentication#stateless-http-basic-authentication虽然解决了登录不方便,然后想消耗其他资源时提示重新登录的问题。另外,将 api 路由更改为 Web 中间件也不是一个选项。
有人知道如何通过正常的 Laravel 身份验证来保护 Laravel API 路由
最佳答案
解决方案很简单,即使在 documentation 上也是如此。 ,应明确必要的步骤。
我们需要:
- 添加护照
composer需要laravel/passport
- 进行迁移
php artisan migrate
- 安装护照
php artisan Passport:install
第四步比较复杂。我们需要打开 User.php 模型文件。首先我们需要导入 HasApiTokens 并告诉模型使用它。
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
.......
}
然后在我们的config/auth.php
上,我们需要修改api数组并将驱动程序更改为passport
'api' => [
//for API authentication with Passport
'driver' => 'passport',
'provider' => 'users',
],
然后在我们的 app/Http/Kernel.php
上,我们需要将一个中间件添加到键 web
中的 $middlewareGroups
数组中。
protected $middlewareGroups = [
'web' => [
................
//for API authentication with Passport
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
现在我们可以在 api 路由上使用 auth:api
中间件。
Route::middleware('auth:api')->group( function(){
...your routes here
});
关于php - Laravel + React,通过 Laravel 身份验证使用 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52749661/