Laravel Api 和 Web 身份验证同时进行

Posted

技术标签:

【中文标题】Laravel Api 和 Web 身份验证同时进行【英文标题】:Laravel Api and Web Authentication At Same Time 【发布时间】:2020-10-14 19:35:49 【问题描述】:

我正在构建跨平台应用程序,因此我拥有网站和移动应用程序。我还有网站和应用程序的身份验证部分。

我使用 Laravel 作为后端。对于身份验证,我发现了一个叫做“Auth Guards”的东西,在 Laravel 中有两个默认的 Auth 保护,一个用于 Web,另一个用于 API。

但我有点困惑,因为我发现你不能同时使用两个 Auth Guards。

那么,有没有什么方法可以为网站和移动设备构建基于一个数据库表的身份验证系统。

注意我需要除 Firebase Auth 之外的任何解决方案

Auth.php

/*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

【问题讨论】:

这些守卫都使用相同的用户信息(相同的模型和数据库表)......他们只是以不同的方式验证请求(一个使用会话,一个使用请求令牌)但都使用完全相同的用户(如果您没有在每个配置中更改用户提供程序) 我知道,但是在 Auth.php 中你只能选择一个,如果你选择一个,另一个将不起作用 Auth.php 中? ...您使用的是哪个版本的 Laravel? 我正在使用 Laravel 7 那么您指的是什么Auth.php 文件?当您分配 auth 中间件时,您实际上可以传递任意数量的守卫,顺便说一句,它会循环遍历它们(中间件参数),但不确定这是否是您需要的 【参考方案1】:

一个好的解决方案可能是 laravel 官方包 laravel/passport,它为您提供 oauth2,以便您可以轻松地在 android/os 上实现它。

【讨论】:

这(Laravel Passport)是否与 laravel 默认的 web Auth 冲突?或者更确切地说,我可以将它与 Laravel Web 身份验证一起使用吗? 它不遵循以下文档:laravel.com/docs/7.x/passport 移动端可以使用 api Guard,网站可以使用 web Guard。

以上是关于Laravel Api 和 Web 身份验证同时进行的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 进行 API 版本控制和身份验证

Web 和 Api 路由的 Laravel 身份验证问题

Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页

在 Laravel 中使用无需身份验证的 api 路由

将身份验证同时用于 MVC 页面和 Web API 页面?

使用 Laravel API 实现 OAuth 2.0 身份验证