【发布时间】:2016-07-22 05:58:05
【问题描述】:
我在 yii2 中遇到了一些关于清除 cookie 的问题。当我在按钮单击上调用注销功能时,我正在尝试执行以下操作:
- 设置 authtoken,并将其过期值设置为 null
- 如果执行了步骤,则清除会话和 cookie
但问题是在设置 authtoken 并将其过期值设置为 null 之后,如果阻止(我正在清除会话和 cookie),控制不会受到影响。
public function actionLogout()
{
$userId = \Yii::$app->user->identity->id;
$restobj = new RestController();
$this->token = NuLL;
$expire = Null;
$data = ['userId'=>$userId,'token'=>$this->token,'expire'=>$expire];
$data = json_encode($data);
$authtoken = $restobj->updateItem(\app\urls\urls::setauthtoken, $data);
if($authtoken)
{
$session = new Session();
$session->close();
$session->destroy();
$cookies = \Yii::$app->response->cookies;
unset($cookies['user_cookies']);
Yii::$app->user->logout();
return $this->goHome();
}
}
updateItem 函数正在调用此 authtoken 函数:
<?php
namespace app\actions\userloginactions;
use Yii;
use yii\rest\ActiveController;
use app\models\Authmaster;
use yii\base\Action;
class AuthtokenAction extends Action
{
//function used in rest api call for user token
public function run()
{
$data = Yii::$app->getRequest()->getBodyParams();
$userId = $data['userId'];
$token = $data['token'];
$expire = $data['expire'];
$result = Authmaster::setauthtoken($userId,$token,$expire);
return true;
}
}
从 AuthtokenAction 调用的模型中的 setauthtoken 函数
public static function setauthtoken($userId,$token,$expire)
{
return Authmaster::updateAll(['token'=>$token,'expire'=>$expire],['user_id'=>$userId]);
}
当我单击注销按钮时,它成功地将 authtoken 和过期设置为 null,但由于 AuthtokenAction 功能,它直接显示 true,并且控制不会进入 if 块。 如果我对此进行评论并直接编写cookie清除块,则该函数调用会产生一些问题,然后cookie会被清除而没有任何问题。
【问题讨论】:
标签: php cookies yii2 logout unset