Laravel + Dingle Api + JWT 用户认证
JWT代表Json Web Token. JWT能有效地进行身份验证并连接前后端。
操作环境:Laravel 5.5 + PHP 7.1
目的:完成用户认证,取得Token / 通过Token取得当前登录用户
参考网址:
通过尝试,以上方法只适用于Laravel 5.2,因为更高版本中,/routes路径下有web.php和api.php,会导致CSRF令牌问题,详见https://github.com/laravelbrasil/forum/issues/136
所以抛弃以上做法,选择使用Dingle进行配置
参考网址:
注:
在生成key(php artisan jwt:generate)时,系统报错:
1
2[ReflectionException]
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决方案:
在 /vendor/tymon/jwt-auth/src/Commands/JWTGenerateCommand.php 中添加方法:1
2
3
4public function handle()
{
$this->fire();
}即可解决
- 文档中关于PostsController的部分可以忽略
配置完成后,测试时可能会遇到错误
1
Argument 1 passed to Illuminate\Auth\EloquentUserProvider::validateCredentials() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given...
解决方案:
在 /app/User.php 中,修改代码为1
2
3
4
5
6
7...
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;
class User extends \Eloquent implements Authenticatable
{
use AuthenticableTrait;
...即可解决
配置完成后,可以用postman进行测试,完美!!❤️❤️