yii2 不同域名下进行授权登录

/**
     * Logs in a user.
     * 如果是 第三方来进行授权登录的话 必须带上参数 type=auth return=returnUrl
     * @return mixed
     */
    public function actionLogin()
    {
        $this->setReferer();
        
        if (!Yii::$app->user->isGuest) {
            if (($type = Yii::$app->getRequest()->get('type')) && $type == 'auth') {
                return $this->authCallback();
            } else {
                return $this->goHome();
            }
        }
        
        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post())) {
            if($model->login()){
                if (($type = Yii::$app->getRequest()->get('type')) && $type == 'auth') {
                    return $this->authCallback();
                } else {
                    return $this->goBack();
                }
            }else{
                Yii::$app->session->setFlash('login-error','用户名或密码错误');
                $this->redirect('login');
            }
            
        } else {
            return $this->render('login', [
                'model' => $model,
            ]);
        }
    }
    
    /**
     * 记录来源网址
     */
    private function setReferer()
    {
        $currentRoute = $this->getRoute();
        $referer = Yii::$app->getRequest()->getReferrer();
        if(strripos($referer, $currentRoute) === false){
            Yii::$app->user->setReturnUrl($referer);
        }
    }
    /**
     * 此方法被调用的前台是用户已经是登录状态了
     * 授权后的回调函数
     */
    private function authCallback()
    {
        
        if ($user = User::findOne(Yii::$app->user->id)) {
            $returnUrl = Yii::$app->getUser()->getReturnUrl(null);
            $authUrl = Yii::$app->getRequest()->get('return');

            if (!User::isPasswordResetTokenValid($user->password_reset_token)) {
                $user->generatePasswordResetToken();
                if (!$user->save()) {
                    Yii::$app->session->setFlash('login-error','授权登录失败,暂时无法获取ticket');
                    return false;
                }
            }
            
            $authUrl .= "?ticket=".$user->password_reset_token."&returnUrl=".$returnUrl;
            
            return $this->redirect($authUrl);
        }
        
        die('<script>alert("授权出错!");window.history.go(-1);</script>');
    }

  

转载于:https://www.cnblogs.com/james888/p/6379336.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值