php - Laravel + React,通过 Laravel 身份验证使用 api

标签 php reactjs laravel laravel-5

我们有一个以 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 上也是如此。 ,应明确必要的步骤。

我们需要:

  1. 添加护照composer需要laravel/passport
  2. 进行迁移 php artisan migrate
  3. 安装护照 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/

相关文章:

javascript - Gatsby 中的外部 CSS/JS

laravel - 在灯塔 graphql 文件中声明变量

php - 比较 Laravel 5 中的两列

PHP日期格式转换

php: 无法修改函数中的数组?

javascript - React - setState 错误 - 在状态转换期间无法更新

php - 将策略模式与环境变量 Laravel 一起使用

PHP 变量作为 SQL 查询中的表名

php - 如何让mysql在全文检索时自动加粗匹配的单词

reactjs - 使用 react 内联样式在不同选项卡上切换事件状态