没有用户模型的 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 身份验证访问路由?