【问题标题】:how to logout from rest api in yii2如何从yii2中的rest api注销
【发布时间】:2019-01-19 09:07:11
【问题描述】:

我正在使用注销操作在 yii2 框架中调用注销 api

网址:http://localhost/mobile/public/api/v1/logout

代码:

public function actionLogout()
{
    $user_t = Yii::$app->user->logout();
    return $this->apiItem(array(),'Logout Successfully');
}

但是在调用logout api之后

在此之后我调用view profile api 它返回用户数据

public function actionViewprofile()
{
    $user = Yii::$app->user->identity;

    $profile_fetch = [
        'firstname'       => $user['member_fname'],
        'lastname'        => $user['member_lname'],
        'gender'          => $user['member_gender'],
        'dateofbirth'     => $user['member_dob']
    ];
    return $this->apiItem($profile_fetch);
}

其中apitem是json参数格式的函数

 /**
 * Api Item response
 */
public function apiItem($data, $message = false,$flag = false )
{
    Yii::$app->response->statusCode = 200;
    return [
        'statusCode' => 200,
        'message' => $message ? $message : 'Data retrieval successful',
        'data' => $data,
        'flag' => $flag
    ];
}

【问题讨论】:

  • 您是否为您在注销后访问的操作启用了身份验证?
  • 是的,如何清除身份验证令牌@MuhammadOmerAslam
  • 据我所知,我会通过客户端应用程序获取令牌并将其与每个请求一起传递给服务器(REST 中没有会话概念),或者我可能误解了你在这里问的内容跨度>
  • 我每次都在标头中传递身份验证令牌,但在注销 api 中我想从 yii2 会话中删除令牌
  • @Pritamkumar 请发布您的配置main.php 代码

标签: php json rest yii2


【解决方案1】:

从数据库中清除令牌并清除用户会话

 $userID = Yii::$app->session->get('userID');

 $userModel = User::find()->where(['id'=>$userID])->one();
   if(!empty($userModel))
   {
    $userModel->token=NULL;
    $userModel->save(false);
   }
   Yii::app()->user->logout(false);

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 2013-07-04
    • 2014-12-22
    • 2020-03-19
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多