Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2 Rest Api用户承载身份验证到期时间_Yii2_Yii2 Api - Fatal编程技术网

Yii2 Rest Api用户承载身份验证到期时间

Yii2 Rest Api用户承载身份验证到期时间,yii2,yii2-api,Yii2,Yii2 Api,我目前正在开发一个基于yii2的restapi。我使用承载令牌进行用户身份验证。让我解释一下要求 1) 第一个用户使用其凭据从外部php应用程序进行身份验证 2) 他/她获得了访问令牌 3) 每个后续请求都是使用此访问令牌发出的 public static function findIdentityByAccessToken($token, $type = null) { return static::findOne(['auth_key' => $token]); } 这就是我

我目前正在开发一个基于yii2的restapi。我使用承载令牌进行用户身份验证。让我解释一下要求

1) 第一个用户使用其凭据从外部php应用程序进行身份验证

2) 他/她获得了访问令牌

3) 每个后续请求都是使用此访问令牌发出的

public static function findIdentityByAccessToken($token, $type = null)
{
    return static::findOne(['auth_key' => $token]);
}

这就是我开始思考的地方。我找不到访问令牌的任何过期时间。真的需要吗?如果是,我如何存档?提前谢谢。

你的问题有点宽泛,但我会尽力帮助你思考

我找不到访问令牌的任何过期时间。真的需要吗

这取决于你的要求。您希望您的用户在第一次身份验证后能够无限期地访问您的API吗?您希望您的用户每隔一段时间更新他们的令牌吗

我建议使用后者,因为它限制了潜在攻击者使用受损访问令牌的时间

public static function findIdentityByAccessToken($token, $type = null)
{
    return static::findOne(['auth_key' => $token]);
}
如果是,我如何存档

一个选项是向与您的标识类对应的数据库表中添加一个包含过期日期的日期时间的字段,并检查这在
findIdentityByAccessToken()的实现中是否仍然有效


据我所知,Yii默认情况下不会有身份验证令牌过期时间。我们必须在外部实施。请纠正我,如果我错了,请参考这个链接,它可能会对你有所帮助-我做了同样的事情,而不久前,发现JWT的工作很好。您可以在令牌中定义超时,并对其进行签名,这样我就不可能对其进行篡改。