看的站内的这篇连接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);}
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
第一个问题:User模型放在哪个目录下没有统一的标准,根据你个人习惯来定,而且laravel自带也没有Models文件夹。第二个问题:所继承的Authenticatable,是useIlluminate\Foundation\Auth\UserasAuthenticatable这段代码,进入Illuminate\Foundation\Auth\User这个类,我们会看到classUserextendsModel这段代码,所以User模型还是继承了Model哦第三个问题是JWT底层实现的,这个我也不是很清楚,不知道有没有大牛来补充下
MMTTMM
TA贡献1869条经验 获得超4个赞
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);}
添加回答
举报
0/150
提交
取消