我正面临一些关于在yii2中清除cookie的问题。当我在按钮上调用注销功能时,我正在尝试执行以下操作:
但问题是在设置authtoken之后,它的到期值为空控制不在if块下(我在哪里清除会话和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和expiration设置为null,但是由于AuthtokenAction函数它直接显示为true,并且如果阻塞,则控件不会被置于 该函数调用正在创建一些问题,如果我评论并直接写cookie清除块然后cookie被清除没有任何问题。
答案 0 :(得分:3)
请检查以下代码以清除所有Cookie。它对我有用,希望对你也有用。
Yii::$app->cache->flush()
答案 1 :(得分:1)
请尝试使用以下行
$cookies = Yii::$app->response->cookies;
$cookies->remove('user_cookies');
你能尝试一下这个吗?
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
答案 2 :(得分:1)
希望这有助于其他人......
$cookies = Yii::$app->response->cookies;
$cookies->remove('username');
unset($cookies['username']);
在以下参考链接中找到:http://www.bsourcecode.com/yiiframework2/cookies-handling-in-yii-framework2-0/