看的站内的这篇连接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底层实现的,这个我也不是很清楚,不知道有没有大牛来补充下
交互式爱情
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); }
- 2 回答
- 0 关注
- 1588 浏览
添加回答
举报
0/150
提交
取消