序言本文主要是对“关于Yii2如何实现跨域的SSO登陆的解析”的改进,因为在那篇文章中我已经写出了SSO登陆的基本实现过程,现在是进一步优化。主要优化的部分有两点:一、在www.XXX.com登陆状态的页面地址栏上输入login.XXX.com的时候回到登陆页面,但并不退出登陆,再输入www.XXX.com的时候" /> 序言本文主要是对“关于Yii2如何实现跨域的SSO登陆的解析”的改进,因为在那篇文章中我已经写出了SSO登陆的基本实现过程,现在是进一步优化。主要优化的部分有两点:一、在www.XXX.com登陆状态的页面地址栏上输入login.XXX.com的时候回到登陆页面,但并不退出登陆,再输入www.XXX.com的时候">
Heim Backend-Entwicklung PHP-Tutorial 进一步优化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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

<code>'session' => [           
            'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],            
            'timeout' => 3600,
        ],</code>
Nach dem Login kopieren

2.2、修改后代码

<code>'session' => [           
            'cookieParams' => ['domain' => '.' . DOMAIN, 'lifetime' => 0],            
            'timeout' => 7200,
        ],</code>
Nach dem Login kopieren

常见问题

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

相关资料

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

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

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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On So implementieren Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On Oct 15, 2023 pm 02:49 PM

So erreichen Sie mit PHP ein effizientes und stabiles SSO-Single-Sign-On. Einführung: Mit der Popularität von Internetanwendungen sind Benutzer mit einer großen Anzahl von Registrierungs- und Anmeldeprozessen konfrontiert. Um das Benutzererlebnis zu verbessern und die Registrierungs- und Anmeldeintervalle der Benutzer zu verkürzen, haben viele Websites und Anwendungen damit begonnen, die Single-Sign-On-Technologie (Single Sign-On, kurz SSO) einzuführen. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP ein effizientes und stabiles SSO-Single-Sign-On implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. SSO-Single-Sign-On-Prinzip SSO-Single-Sign-On ist eine Lösung zur Identitätsauthentifizierung

So entwickeln Sie mit dem PHP-Framework Yii ein hochverfügbares Cloud-Backup-System So entwickeln Sie mit dem PHP-Framework Yii ein hochverfügbares Cloud-Backup-System Jun 27, 2023 am 09:04 AM

Mit der kontinuierlichen Weiterentwicklung der Cloud-Computing-Technologie ist die Datensicherung zu etwas geworden, das jedes Unternehmen durchführen muss. In diesem Zusammenhang ist es besonders wichtig, ein hochverfügbares Cloud-Backup-System zu entwickeln. Das PHP-Framework Yii ist ein leistungsstarkes Framework, das Entwicklern dabei helfen kann, schnell leistungsstarke Webanwendungen zu erstellen. Im Folgenden wird vorgestellt, wie Sie mit dem Yii-Framework ein hochverfügbares Cloud-Backup-System entwickeln. Entwerfen des Datenbankmodells Im Yii-Framework ist das Datenbankmodell ein sehr wichtiger Teil. Denn das Datensicherungssystem erfordert viele Tabellen und Beziehungen

OAuth in PHP: Aufbau einer plattformübergreifenden SSO-Lösung OAuth in PHP: Aufbau einer plattformübergreifenden SSO-Lösung Jul 28, 2023 pm 09:38 PM

OAuth in PHP: Aufbau einer plattformübergreifenden SSO-Lösung Mit der rasanten Entwicklung des Internets ist es für Menschen zur Norm geworden, verschiedene Anwendungen auf mehreren Plattformen zu verwenden. Dies wirft die Frage auf: Wie implementiert man Single Sign-On (SSO) zwischen verschiedenen Plattformen? OAuth (Open Authorization) ist eine ausgezeichnete Wahl, um dieses Problem zu lösen. OAuth ist ein offener Standard, der es Benutzern ermöglicht, Anwendungen von Drittanbietern den Zugriff auf ihre Internetressourcen zu autorisieren, ohne ihre Anmeldeinformationen weiterzugeben. OAuth kann verwendet werden, um eine Multi-

Symfony vs Yii2: Welches Framework eignet sich besser für die Entwicklung umfangreicher Webanwendungen? Symfony vs Yii2: Welches Framework eignet sich besser für die Entwicklung umfangreicher Webanwendungen? Jun 19, 2023 am 10:57 AM

Da die Nachfrage nach Webanwendungen weiter wächst, haben Entwickler bei der Auswahl von Entwicklungsframeworks immer mehr Möglichkeiten. Symfony und Yii2 sind zwei beliebte PHP-Frameworks. Sie verfügen beide über leistungsstarke Funktionen und Leistung. Welches Framework ist jedoch besser geeignet, wenn es darum geht, umfangreiche Webanwendungen zu entwickeln? Als nächstes führen wir eine vergleichende Analyse von Symphony und Yii2 durch, um Ihnen zu helfen, eine bessere Wahl zu treffen. Grundlegende Übersicht Symphony ist ein Open-Source-Webanwendungs-Framework, das in PHP geschrieben ist und darauf aufbaut

Datenabfrage im Yii-Framework: Effizienter Zugriff auf Daten Datenabfrage im Yii-Framework: Effizienter Zugriff auf Daten Jun 21, 2023 am 11:22 AM

Das Yii-Framework ist ein Open-Source-PHP-Webanwendungsframework, das zahlreiche Tools und Komponenten zur Vereinfachung des Prozesses der Webanwendungsentwicklung bereitstellt, wobei die Datenabfrage eine der wichtigen Komponenten ist. Im Yii-Framework können wir eine SQL-ähnliche Syntax verwenden, um auf die Datenbank zuzugreifen und Daten effizient abzufragen und zu bearbeiten. Der Abfrage-Builder des Yii-Frameworks umfasst hauptsächlich die folgenden Typen: ActiveRecord-Abfrage, QueryBuilder-Abfrage, Befehlsabfrage und Original-SQL-Abfrage

Wie verwende ich das Yii3-Framework in PHP? Wie verwende ich das Yii3-Framework in PHP? May 31, 2023 pm 10:42 PM

Mit der Weiterentwicklung des Internets wird auch die Nachfrage nach der Entwicklung von Webanwendungen immer größer. Für Entwickler erfordert die Entwicklung von Anwendungen ein stabiles, effizientes und leistungsstarkes Framework, das die Entwicklungseffizienz verbessern kann. Yii ist ein führendes Hochleistungs-PHP-Framework, das umfangreiche Funktionen und gute Leistung bietet. Yii3 ist die nächste Generation des Yii-Frameworks, das die Leistung und Codequalität basierend auf Yii2 weiter optimiert. In diesem Artikel stellen wir vor, wie Sie das Yii3-Framework zum Entwickeln von PHP-Anwendungen verwenden.

Yii2 vs. Phalcon: Welches Framework eignet sich besser für die Entwicklung von Grafik-Rendering-Anwendungen? Yii2 vs. Phalcon: Welches Framework eignet sich besser für die Entwicklung von Grafik-Rendering-Anwendungen? Jun 19, 2023 am 08:09 AM

Im aktuellen Informationszeitalter sind Big Data, künstliche Intelligenz, Cloud Computing und andere Technologien in den Fokus großer Unternehmen gerückt. Unter diesen Technologien hat die Grafikkarten-Rendering-Technologie als leistungsstarke Grafikverarbeitungstechnologie immer mehr Aufmerksamkeit erhalten. Die Grafikkarten-Rendering-Technologie wird häufig in der Spieleentwicklung, bei Film- und Fernsehspezialeffekten, im technischen Modellbau und in anderen Bereichen eingesetzt. Für Entwickler ist die Wahl eines Frameworks, das zu ihren Projekten passt, eine sehr wichtige Entscheidung. Unter den aktuellen Sprachen ist PHP eine sehr dynamische Sprache. Einige hervorragende PHP-Frameworks wie Yii2, Ph

Besprechen Sie die Sicherheit und Schwachstellenprävention von PHP SSO Single Sign-On Besprechen Sie die Sicherheit und Schwachstellenprävention von PHP SSO Single Sign-On Oct 15, 2023 pm 02:36 PM

Sicherheit und Schwachstellenprävention von PHPSSO Single Sign-On 1. Einführung Mit der Entwicklung des Internets haben immer mehr Websites Benutzerauthentifizierungsfunktionen implementiert. Allerdings müssen Benutzer jedes Mal, wenn sie sich auf verschiedenen Websites anmelden, ihre Kontonummer und ihr Passwort eingeben, was umständlich ist und leicht vergessen wird. Um dieses Problem zu lösen, wurde Single Sign-On (SSO) entwickelt. SSO ist eine Lösung zur Authentifizierung der Benutzeridentität auf mehreren Websites. Benutzer müssen sich nur einmal anmelden, um nahtlosen Zugriff auf andere Websites zu erhalten. 2. PH

See all articles