没有用户模型的 Laravel JWT 身份验证

Posted

技术标签:

【中文标题】没有用户模型的 Laravel JWT 身份验证【英文标题】:Laravel JWT Authentication without User Model 【发布时间】:2018-06-08 15:54:47 【问题描述】:

我正在尝试为同一个项目中的移动用户构建一个 laravel 应用程序和 API。主网站实际上是网站的后端,需要我已经实施的适当身份验证。并且 api 还需要使用不同的凭据进行身份验证(不是来自网络的用户模型)。

此时我已经在我的项目中添加了 dingo api 并且它工作正常。但现在我还需要为 dingo 添加 jwt。问题是 jwt 默认使用 App\User 模型,我不想使用 Web 用户凭据对 api 用户进行身份验证。请建议我解决这个问题的最佳方法是什么。谢谢

【问题讨论】:

万一有人来这里寻找答案,我写了一篇关于这个话题的文章:medium.com/@sirajul.anik/… 【参考方案1】:

查看文档看起来就像您在使用 php artisan vendor:publish 发布的 config.php 文件中指定了身份验证提供程序

auth 设置为您的提供商: https://github.com/tymondesigns/jwt-auth/blob/develop/config/config.php#L252

或者您可以在app.php 配置文件中指定您使用的驱动程序和/或用户提供程序:

https://github.com/laravel/laravel/blob/master/config/auth.php#L69 https://github.com/laravel/laravel/blob/master/config/auth.php#L70

更新:

    进行迁移以保存客户表:php artisan make:migration create_clients_table

    根据需要更新迁移文件。

    使用php artisan make:model Client创建客户端模型

    更新模型以匹配迁移并添加任何关系。

    运行迁移。

这应该可以让this 工作

您可能需要相应地更新为:

'api' => [
    'driver' => 'token',
    'provider' => 'clients',
],

或者可能:

'api' => [
    'driver' => 'token',
    'provider' => 'jwt',
],

https://github.com/laravel/laravel/blob/master/config/auth.php#L46

【讨论】:

是的,我已经尝试过 auth.php 配置。我是 laravel 的新手。我是否必须为此创建另一个提供程序?在我的 auth.php 中,我为 api 保护启用了第二个数组。和 ` 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'clients' => [ 'driver' => 'eloquent ', '模型' => App\Client::class, ], ],` 您实施的“正确身份验证”是什么? 是的,我已经尝试过 auth.php 配置。我是 laravel 的新手。我是否必须为此创建另一个提供程序?在我的 auth.php 中,我为 api 保护启用了第二个数组。 [link] prntscr.com/ht7cjv [/link] 然后是我的 routes/api.php 中的 api 路由,所以从技术上讲它应该使用客户端模型吗? laravel 内置身份验证 在这种情况下添加另一个键无济于事,除非您引用该键

以上是关于没有用户模型的 Laravel JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 和 Mongodb 进行多 Jwt 身份验证

Auth 尝试方法在 Laravel/Lumen + JWT + 用户自定义模型中如何工作

没有数据库的 Laravel 中的 JWT 身份验证

如何允许任何用户使用 Laravel JWT 身份验证访问路由?

JWT 从 Laravel 中的令牌中检索经过身份验证的用户

如何在 Laravel 和 Vue.js 中使用 jwt-auth 检查用户是不是经过身份验证