我在yii2中遇到了一些关于清除cookie的问题。当我点击按钮调用注销功能时,我正在尝试执行以下操作:
- 将authtoken及其过期值设置为null
- 如果执行了步骤,则清除会话和cookie
但问题是在将authtoken及其过期值设置为null之后,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]);
}
当我点击logout按钮时,它成功地将authtoken和expiration设置为null,但由于AuthtokenAction函数的作用,它直接显示true,并且控制不在if块下。这个函数调用产生了一些问题,如果我评论并直接写cookie清除块,那么cookie就会被清除,没有任何问题。
请检查以下代码以清除所有cookie。它对我有效,希望对你也有效。
Yii::$app->cache->flush()
请尝试使用以下行
$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, '/');
}
}
希望这能帮助其他人。。。
$cookies = Yii::$app->response->cookies;
$cookies->remove('username');
unset($cookies['username']);
在以下引用的链接中找到:http://www.bsourcecode.com/yiiframework2/cookies-handling-in-yii-framework2-0/