序言本文主要是对“关于Yii2如何实现跨域的SSO登陆的解析”的改进,因为在那篇文章中我已经写出了SSO登陆的基本实现过程,现在是进一步优化。主要优化的部分有两点:一、在www.XXX.com登陆状态的页面地址栏上输入login.XXX.com的时候回到登陆页面,但并不退出登陆,再输入www.XXX.com的时候" /> 序言本文主要是对“关于Yii2如何实现跨域的SSO登陆的解析”的改进,因为在那篇文章中我已经写出了SSO登陆的基本实现过程,现在是进一步优化。主要优化的部分有两点:一、在www.XXX.com登陆状态的页面地址栏上输入login.XXX.com的时候回到登陆页面,但并不退出登陆,再输入www.XXX.com的时候">
Maison développement back-end tutoriel php 进一步优化Yii2跨域的SSO登陆 丽珠门户sso sso.dinghuo123 sso

进一步优化Yii2跨域的SSO登陆 丽珠门户sso sso.dinghuo123 sso

Jul 29, 2016 am 08:52 AM
sso yii

data-id="1190000004999380" data-licence="">

序言

本文主要是对“关于Yii2如何实现跨域的SSO登陆的解析”的改进,因为在那篇文章中我已经写出了SSO登陆的基本实现过程,现在是进一步优化。主要优化的部分有两点:一、在www.XXX.com登陆状态的页面地址栏上输入login.XXX.com的时候回到登陆页面,但并不退出登陆,再输入www.XXX.com的时候,让它又回到了www.XXX.com页面并保持登陆的状态;二、修改session的过期时间,设置到极大值。

需求分析

1、输入login.XXX.com只是让它回到登陆的界面,但并不会退出登陆,session和cookie的值还是保存着的。
2、实现永久登陆状态。只要不点击退出登陆,就一直保持着登陆状态。

代码分析

1、对login模块SiteController.php的Login方法修改
1.1、修改前代码

<code>public function actionLogin()
        {   
            $URL=Yii::$app->request->get('redirectURL');  
            $model = new LoginForm();
            if (!\Yii::$app->user->isGuest) { 
                $this->actionLogout();//退出登陆
                return $this->redirect('http://'.DOMAIN_LOGIN.'?redirectURL=http://'.DOMAIN_HOME);
            } 
        
            if ($model->load(Yii::$app->request->post()) && $model->login()) {
                if(empty($URL)){
                    return $this->redirect('http://'.DOMAIN_HOME,301);
                }else{
                    return $this->redirect($URL,301);
                }           
                // return $this->goBack();
            } else { 
                return $this->renderPartial('login', [
                    'model' => $model,
                ]);
            }
        }</code>
Copier après la connexion

1.2、修改后代码

<code> public function actionLogin()
    {  
        $URL=Yii::$app->request->get('redirectURL');  
        $URL1='http://'.DOMAIN_CRM;
        $URL2='http://'.DOMAIN_HR;
        $URL3='http://'.DOMAIN_ADMIN;
        $URL4='http://'.DOMAIN_OA;
       
        $redirectURL1='http://'.DOMAIN_LOGIN.'?redirectURL=http://'.DOMAIN_CRM;
        $redirectURL2='http://'.DOMAIN_LOGIN.'?redirectURL=http://'.DOMAIN_HR;
        $redirectURL3='http://'.DOMAIN_LOGIN.'?redirectURL=http://'.DOMAIN_ADMIN;
        $redirectURL4='http://'.DOMAIN_LOGIN.'?redirectURL=http://'.DOMAIN_OA;
        $model = new LoginForm();

        //验证是否已登录,非空为登录
        if (!\Yii::$app->user->isGuest) { 
           if(!empty($URL)){
                $this->actionLogout();//退出登陆
                if($URL==$URL2){
                    return $this->redirect($redirectURL2);
                }elseif($URL==$URL3){
                    return $this->redirect($redirectURL3);
                }
                if($URL==$URL4){
                    return $this->redirect($redirectURL4);
                }
                return $this->redirect($redirectURL1);

           }else{
                //redirectURL不存在时,提交表单判断
                if(DOMAIN_LOGIN){   
                   if ($model->load(Yii::$app->request->post()) && $model->login()) {
                        if(empty($URL)){ 
                            return $this->redirect($URL1,301);             
                        }else{
                            if($URL==$URL2){
                                return $this->redirect($URL2,301);
                            }elseif($URL==$URL3){
                                return $this->redirect($URL3,301);
                            }
                            if($URL==$URL4){
                                return $this->redirect($URL4,301);
                            }
                            return $this->redirect($URL1,301);
                        }           
                    } else { 
                        return $this->renderPartial('login', [
                            'model' => $model,
                        ]);
                    }
                }else{ 
                    return $this->goHome(); //与之前的代码主要的区别在这里,登陆就让它回到登陆页面。
                }  
           }  
        } else { 
            //redirectURL存在时,提交表单判断
            if ($model->load(Yii::$app->request->post()) && $model->login()) {
                if(empty($URL)){ 
                    return $this->redirect($URL1,301);             
                }else{
                    if($URL==$URL2){
                        return $this->redirect($URL2,301);
                    }elseif($URL==$URL3){
                        return $this->redirect($URL3,301);
                    }
                    if($URL==$URL4){
                        return $this->redirect($URL4,301);
                    }
                    return $this->redirect($URL1,301);
                }           
            } else { 
                return $this->renderPartial('login', [
                    'model' => $model,
                ]);
            }
        }
    }</code>
Copier après la connexion

2、修改session的过期时间,设置到极大值。
commonconfigmain.php
2.1、修改前代码

<code>'session' => [           
            'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],            
            'timeout' => 3600,
        ],</code>
Copier après la connexion

2.2、修改后代码

<code>'session' => [           
            'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],            
            'timeout' => 7200,
        ],</code>
Copier après la connexion

常见问题

1、虽然session的过期时间已经设置了极大值,登陆成功cookie也有值了,但是登陆后大约过两个小时左右还是会退出登陆,为何会这样?Yii2如何实现真正的永久登陆,还请大牛们解答,后续要是我解决了也会继续更新,一同进步。

相关资料

Yii2 配置 跨域登录实例:http://www.kuitao8.com/20150507/3735.shtml
Yii2 如何利用redirect让页面自动跳转到外站?:https://segmentfault.com/q/1010000002549004

全文完,如有不足或者更好的方式方法,欢迎大家踊跃提出,我们一起相互交流学习。

以上就介绍了进一步优化Yii2跨域的SSO登陆,包括了sso,yii方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser PHP pour implémenter une authentification unique SSO efficace et stable Comment utiliser PHP pour implémenter une authentification unique SSO efficace et stable Oct 15, 2023 pm 02:49 PM

Comment utiliser PHP pour obtenir une authentification unique SSO efficace et stable Introduction : Avec la popularité des applications Internet, les utilisateurs sont confrontés à un grand nombre de processus d'inscription et de connexion. Afin d'améliorer l'expérience utilisateur et de réduire les intervalles d'enregistrement et de connexion des utilisateurs, de nombreux sites Web et applications ont commencé à adopter la technologie d'authentification unique (Single Sign-On, appelée SSO). Cet article explique comment utiliser PHP pour implémenter une authentification unique SSO efficace et stable et fournit des exemples de code spécifiques. 1. Principe de l'authentification unique SSO L'authentification unique SSO est une solution d'authentification d'identité

OAuth en PHP : créer une solution SSO multiplateforme OAuth en PHP : créer une solution SSO multiplateforme Jul 28, 2023 pm 09:38 PM

OAuth en PHP : créer une solution SSO multiplateforme Avec le développement rapide d'Internet, il est devenu la norme pour les utilisateurs d'utiliser diverses applications sur plusieurs plates-formes. Cela soulève une question : comment mettre en œuvre l’authentification unique (SSO) entre différentes plateformes ? OAuth (Open Authorization) est devenu un excellent choix pour résoudre ce problème. OAuth est un standard ouvert qui permet aux utilisateurs d'autoriser des applications tierces à accéder à leurs ressources Internet sans partager leurs informations d'identification. OAuth peut être utilisé pour créer un multi-

Comment utiliser le framework Yii3 en php ? Comment utiliser le framework Yii3 en php ? May 31, 2023 pm 10:42 PM

À mesure qu’Internet continue de se développer, la demande de développement d’applications Web augmente également. Pour les développeurs, le développement d'applications nécessite un cadre stable, efficace et puissant, qui peut améliorer l'efficacité du développement. Yii est un framework PHP hautes performances de premier plan qui offre des fonctionnalités riches et de bonnes performances. Yii3 est la version nouvelle génération du framework Yii, qui optimise davantage les performances et la qualité du code basé sur Yii2. Dans cet article, nous présenterons comment utiliser le framework Yii3 pour développer des applications PHP.

Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Comment utiliser le framework PHP Yii pour développer un système de sauvegarde cloud hautement disponible Jun 27, 2023 am 09:04 AM

Avec le développement continu de la technologie du cloud computing, la sauvegarde des données est devenue quelque chose que chaque entreprise doit faire. Dans ce contexte, il est particulièrement important de développer un système de sauvegarde cloud hautement disponible. Le framework PHP Yii est un framework puissant qui peut aider les développeurs à créer rapidement des applications Web hautes performances. Ce qui suit explique comment utiliser le framework Yii pour développer un système de sauvegarde cloud hautement disponible. Conception du modèle de base de données Dans le framework Yii, le modèle de base de données est une partie très importante. Parce que le système de sauvegarde des données nécessite beaucoup de tables et de relations

Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Yii2 vs Phalcon : quel framework est le meilleur pour développer des applications de rendu graphique ? Jun 19, 2023 am 08:09 AM

À l’ère actuelle de l’information, le big data, l’intelligence artificielle, le cloud computing et d’autres technologies sont devenus au centre des préoccupations des grandes entreprises. Parmi ces technologies, la technologie de rendu des cartes graphiques, en tant que technologie de traitement graphique haute performance, fait l'objet de plus en plus d'attention. La technologie de rendu des cartes graphiques est largement utilisée dans le développement de jeux, les effets spéciaux de films et de télévision, la modélisation technique et d'autres domaines. Pour les développeurs, choisir un framework adapté à leurs projets est une décision très importante. Parmi les langages actuels, PHP est un langage très dynamique. Quelques excellents frameworks PHP comme Yii2, Ph.

Requête de données dans le framework Yii : accédez efficacement aux données Requête de données dans le framework Yii : accédez efficacement aux données Jun 21, 2023 am 11:22 AM

Le framework Yii est un framework d'application Web PHP open source qui fournit de nombreux outils et composants pour simplifier le processus de développement d'applications Web, dont la requête de données est l'un des composants importants. Dans le framework Yii, nous pouvons utiliser une syntaxe de type SQL pour accéder à la base de données afin d'interroger et de manipuler les données efficacement. Le générateur de requêtes du framework Yii comprend principalement les types suivants : requête ActiveRecord, requête QueryBuilder, requête de commande et requête SQL originale.

Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Symfony vs Yii2 : quel framework est le meilleur pour développer des applications Web à grande échelle ? Jun 19, 2023 am 10:57 AM

Alors que la demande d'applications Web continue de croître, les développeurs ont de plus en plus de choix dans le choix des frameworks de développement. Symfony et Yii2 sont deux frameworks PHP populaires. Ils ont tous deux des fonctions et des performances puissantes, mais face à la nécessité de développer des applications Web à grande échelle, quel framework est le plus adapté ? Nous procéderons ensuite à une analyse comparative de Symphony et Yii2 pour vous aider à faire un meilleur choix. Présentation de base Symphony est un framework d'application Web open source écrit en PHP et basé sur

Comment convertir des objets yii en tableaux ou directement au format json Comment convertir des objets yii en tableaux ou directement au format json Jan 08, 2021 am 10:13 AM

Framework Yii : cet article présente la méthode de Yii pour convertir des objets en tableaux ou les afficher directement au format json. Il a une certaine valeur de référence et j'espère qu'il pourra vous aider.

See all articles