请教各位一个问题,求解答:token的生成?

看的站内的这篇连接Laravel5.5安装JWT有两个问题想请教一下:文章一开始讲的配置Model和Controller这一节里面为什么把User模型直接放到app目录下呢?不应该是Models目录下吗?而且User模型不都是继承Model这样写classUserextendsModel吗他这里为什么这样classUserextendsAuthenticatableimplementsJWTSubject写呢?这样写就不能继承Model了啊第二个问题AuthController里面的login方法的$token怎么生成的呢?这个$token就是最终返回给前端的TOKEN吧但是我看这个$token没写怎么得到的啊?我测试是一直提示Undefinedvariable:token大家能给解释一下吗?谢谢<?phpnamespaceApp\Http\Controllers;useIlluminate\Support\Facades\Auth;useApp\Http\Controllers\Controller;classAuthControllerextendsController{publicfunction__construct(){$this->middleware('auth:api',['except'=>['login']]);}publicfunctionlogin(){$credentials=request(['email','password']);if(!$token=auth()->attempt($credentials)){returnresponse()->json(['error'=>'Unauthorized'],401);}return$this->respondWithToken($token);}
白衣染霜花
浏览 494回答 2
2回答

慕少森

第一个问题:User模型放在哪个目录下没有统一的标准,根据你个人习惯来定,而且laravel自带也没有Models文件夹。第二个问题:所继承的Authenticatable,是useIlluminate\Foundation\Auth\UserasAuthenticatable这段代码,进入Illuminate\Foundation\Auth\User这个类,我们会看到classUserextendsModel这段代码,所以User模型还是继承了Model哦第三个问题是JWT底层实现的,这个我也不是很清楚,不知道有没有大牛来补充下

MMTTMM

auth()->attempt方法如果信息验证成功,会直接返回token。如果返回true,可能是配置文件config/auth.php没有修改,因为laravel是通过配置文件决定用户验证使用session还是jwt。返回false则是传入的数组有问题。关于第二个问题,是使用了一个语法小技巧,$token的赋值是在if条件语句中,关于token的生成细节,可以搜索jwttoken关键词。if(!$token=auth()->attempt($credentials)){returnresponse()->json(['error'=>'Unauthorized'],401);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript