当我尝试登录时,我得到以下错误,我找不到问题在哪里。我使用lumen 9与php 8.1。
<!-- LcobucciJWTTokenBuilder::relatedTo(): Argument #1 ($subject) must be of type string, null given, called in /home/ss20nt22/public_html/wms/vendor/php-open-source-saver/jwt-auth/src/Providers/JWT/Lcobucci.php on line 212 (500 Internal Server Error) -->
下面是我的函数:
public function login(Request $request)
{
$this->validate($request, [
'nume' => 'required|string',
'password' => 'required|string',
]);
$credentials = $request->only(['nume', 'password']);
if (!$token = Auth::attempt($credentials)) {
// Login has failed
return response()->json(['message' => 'Unauthorized'], 401);
}
return $this->respondWithToken($token);
}
如果有人在laravel 9及以上版本中有相同的问题,但确定JWT_SECRET存在于。env文件中,您的问题可能是在迁移和模型之间的主键id不相同。
当您使用自定义id名称进行迁移时:
$table->id('user_id');
然后像这样在User Model中注册:
protected $primaryKey = "user_id";
在configjwt.php文件中更改
"jwt"=比;Tymon JWTAuth JWT Lcobucci提供者::类,来"jwt"=比;Tymon JWTAuth JWT Namshi提供者::类
我解决了这个问题,我卸载了这个包,并从这里的文档中重新安装了它。
https://jwt-auth.readthedocs.io/en/develop/laravel-installation/
在lumen的情况下,按照下面的文档执行相同的步骤。
https://jwt-auth.readthedocs.io/en/develop/lumen-installation/
步骤:
卸载包
从。env或其他地方删除JWT_SECRET
如果可能的话,删除文件
配置/jwt.php
清除所有流明缓存
停止web服务
按照链接
中的安装说明操作https://jwt-auth.readthedocs.io/en/develop/lumen-installation/
回想一下我在php 8中使用的Laravel 8
我通过运行php artisan config:cache
修复了它。这个命令缓存您的配置。这对我很有帮助,因为我注意到环境变量有时没有时间加载到动态配置中。
为了以防万一,确保通过运行php artisan jwt:secret