鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ Yii如何實(shí)現(xiàn)第三方授權(quán)后跳轉(zhuǎn)至之前頁面?

Yii如何實(shí)現(xiàn)第三方授權(quán)后跳轉(zhuǎn)至之前頁面?

需要實(shí)現(xiàn)的正常操作流程:
1、點(diǎn)擊論壇頁(無需授權(quán),forum/index)
2、點(diǎn)擊個(gè)人中心(需要授權(quán),member/index)
3、跳轉(zhuǎn)至用戶登錄(user/login)
4、點(diǎn)擊下方第三方授權(quán)(如微信 user/auth?client=wechat)
5、微信授權(quán)跳轉(zhuǎn)至個(gè)人中心(member/index);

目前(采用Yii2和yii-wx),通過Yii::$app->request->getUrl()Yii::$app->request->referrer都無法實(shí)現(xiàn)跳轉(zhuǎn)至個(gè)人中心頁面。

protected function oauth()
    {
        $conf = Yii::$app->params['wx']['mp'];

        //$url = Yii::$app->request->getUrl();
        $url = Yii::$app->request->referrer;

        //var_dump($url);die;
        $callback = Yii::$app->urlManager->createAbsoluteUrl(['/wechat/oauth', 'url' => $url]);

        $conf['oauth']['callback'] = urlencode($callback);
        $app = new Application(['conf' => $conf]);
        $oauth = $app->driver('mp.oauth');

        if (Yii::$app->user->isGuest) {
            $oauth->send();
            die;
        }
    }
回答
編輯回答
無標(biāo)題

我們的思路差不多,不過我做了一個(gè)編碼,貼下我的

static public function oauth(){
    $conf = Yii::$app->params['wx']['mp'];
    $url = Yii::$app->request->getUrl();


    $callback = Yii::$app->urlManager->createAbsoluteUrl(['/site/oauth','url'=>urlencode($url)]);

    $conf['oauth']['callback'] = $callback;
    $app = new Application(['conf'=>$conf]);

    try {
        $oauth = $app->driver('mp.oauth');
    }catch(WxException $e){
        die('hacker');
    }

    if(Yii::$app->user->isGuest){
        $oauth->send();
        die();
    }
}
2017年8月27日 21:58