猿问

新手上路,laravel使用JWT时怎么生成的token?各位有什么建议?

看的站内的这篇连接Laravel5.5安装JWT有两个问题想请教一下:文章一开始讲的配置Model和Controller这一节里面为什么把User模型直接放到app目录下呢?不应该是Models目录下吗?而且User模型不都是继承Model这样写classUserextendsModel吗他这里为什么这样classUserextendsAuthenticatableimplementsJWTSubject写呢?这样写就不能继承Model了啊
第二个问题AuthController里面的login方法的$token怎么生成的呢?这个$token就是最终返回给前端的TOKEN吧但是我看这个$token没写怎么得到的啊?我测试是一直提示Undefinedvariable:token大家能给解释一下吗?谢谢
namespaceApp\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);
}
杨__羊羊
浏览 643回答 2
2回答

不负相思意

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

红糖糍粑

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

相关分类

JavaScript
我要回答