我是Laravel和JWT-auth的新手。我已经实现了生成JWT令牌并在后端获取关联用户的过程,但是我仍然无法理解服务器如何仅从存储在客户端上的令牌验证用户的身份验证侧。
如果我登录机器A并在机器B上更改密码,我是否仍可以使用上一个令牌从机器A登录?
答案 0 :(得分:0)
你有一个'用户'表,通常还有另一个像'sessions'的表。当用户发出通过API登录的请求时,会插入“会话”表中的新行(保存令牌),并且API会将令牌返回给用户。对于需要验证的所有请求,用户必须提供此令牌(例如通过HTTP标头)。
如果要根据请求对用户进行身份验证,则必须验证令牌是否存在并保持有效,然后检索用户。流明的例子:
$this->app['auth']->viaRequest('api', function ($request) {
$session = Session::where(['token' => $request->header('token')])->get(); //user gives his token in the header request
if($session){
return $session->user(); //you have setup the hasOne/hasMany relationship between sessions and users
//the user is authenticated
}
return null;
// the user is not authenticated
});
“如果我在机器A上登录并在机器B上更改我的密码,我是否仍可以使用之前的令牌从机器A登录?” 如果令牌仍然有效且您允许多个活动会话,则为是。根据密码不设置令牌。