猿问

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

看的站内的这篇连接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);
    }


一只萌萌小番薯
浏览 1589回答 2
2回答

森林海

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

交互式爱情

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

相关分类

Html5
CSS3
我要回答