为了账号安全,请及时绑定邮箱和手机立即绑定

laravel使用JWT时怎么生成的token?

laravel使用JWT时怎么生成的token?

一只萌萌小番薯 2019-03-01 17:18:17
看的站内的这篇连接Laravel5.5 安装 JWT有两个问题想请教一下:文章一开始讲的配置Model和Controller这一节里面为什么把User模型直接放到app目录下呢?不应该是Models目录下吗?而且User模型不都是继承Model这样写class User extends Model吗 他这里为什么这样class User extends Authenticatable implements JWTSubject写呢?这样写就不能继承Model了啊第二个问题AuthController里面的login方法的$token怎么生成的呢?这个$token就是最终返回给前端的TOKEN吧 但是我看这个$token没写怎么得到的啊?我测试是一直提示Undefined variable: token 大家能给解释一下吗?谢谢<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\Auth;use App\Http\Controllers\Controller;class AuthController extends Controller{    public function __construct()     {        $this->middleware('auth:api', ['except' => ['login']]);     }    public function login()     {         $credentials = request(['email', 'password']);        if (! $token = auth()->attempt($credentials)) {            return response()->json(['error' => 'Unauthorized'], 401);         }        return $this->respondWithToken($token);     }
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

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

查看完整回答
反对 回复 2019-03-01
?
交互式爱情

TA贡献1712条经验 获得超3个赞

auth()->attempt 方法如果信息验证成功,会直接返回 token。如果返回 true,可能是配置文件 config/auth.php 没有修改,因为 laravel 是通过配置文件决定用户验证使用 session 还是 jwt。返回 false 则是传入的数组有问题。

关于第二个问题,是使用了一个语法小技巧,$token 的赋值是在 if 条件语句中,关于 token 的生成细节,可以搜索 jwt token 关键词。

if (! $token = auth()->attempt($credentials)) {    return response()->json(['error' => 'Unauthorized'], 401);
}


查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 1588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信