Laravel Passport未使用JWT cookie进行身份验证(自用API)
我已经浏览了整个文档页面,据我所知,我已经完全按照文档中的说明进行了设置。但是,当我尝试向Laravel Passport未使用JWT cookie进行身份验证(自用API),laravel,laravel-5,laravel-passport,laravel-5.7,Laravel,Laravel 5,Laravel Passport,Laravel 5.7,我已经浏览了整个文档页面,据我所知,我已经完全按照文档中的说明进行了设置。但是,当我尝试向/api/users发出GET请求时,它总是返回401未经授权的 如果我检查请求,我会看到laravel\u令牌确实与请求以及CSRF一起传递 在这一点上,我真的不知道为什么它总是无法验证,但这是相当令人沮丧的,我相信这是我忽略了一些次要的东西 我用的是Laravel 5.7.5 完成配置步骤: 运行php artisan passport:install 为用户模型添加了特征 将Passport::ro
/api/users
发出GET请求时,它总是返回401未经授权的
如果我检查请求,我会看到laravel\u令牌
确实与请求以及CSRF一起传递
在这一点上,我真的不知道为什么它总是无法验证,但这是相当令人沮丧的,我相信这是我忽略了一些次要的东西
我用的是Laravel 5.7.5
完成配置步骤:
- 运行php artisan passport:install
为用户模型添加了特征
将Passport::routes()
添加到AuthServiceProvider::boot()
在config/auth.php中将API驱动程序更改为passport
将createFreshApitonk::class
添加到web中间件
经过大量挖掘,我终于找到了我的问题所在
在5.6及更高版本的Laravel中,Cookie不再序列化/非序列化。但是,Passport仍然希望cookie被序列化。Laravel和Passport的文档都没有指出这一点,希望它们能更同步,所以这不是一个问题
要解决此问题,只需添加Passport::withoutCookieSerialization()
到app\Providers\AuthServiceProvider::boot()
如何检查请求?你用浏览器试过了吗?如果是这样的话,你就错了。您应该使用一些应用程序对端点进行json调用。有点像邮递员。能够在标题中设置应用程序/类型的东西。如果您通过正确的头调用endpoint,请检查您的文件密钥文件权限。@train_fox我正在检查使用Axios发出的请求,Passport文档就是这样做的。这绝对不是错误的做法。我不知道你想说的文件密钥文件权限是什么意思
。当你运行php artisan passport安装时
laravel将生成两个文件,私钥和公钥。检查存储目录以找到它们并检查它们的权限,所需的权限是644。@train_fox啊,是的,这些文件具有正确的权限。是否尝试访问api.php路由文件中定义的默认路由?