SSO單點(diǎn)登錄的PHP實(shí)現(xiàn)方法(Laravel框架),ssolaravel_PHP教程
Jul 12, 2016 am 08:56 AMSSO單點(diǎn)登錄的PHP實(shí)現(xiàn)方法(Laravel框架),ssolaravel
Laravel是一套簡潔、優(yōu)雅的PHP Web開發(fā)框架(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡潔、富于表達(dá)力。
簡單說一下我的邏輯,我也不知道我理解sso對不對。
假如三個(gè)站點(diǎn) a.baidu.com b.baidu.com c.baidu.com
a.baidu.com 作為驗(yàn)證用戶登錄賬戶。
b和c作為客戶端(子系統(tǒng))。
b和c需要登錄的時(shí)候跳轉(zhuǎn)到a,并且攜帶參數(shù)source指明登陸后跳轉(zhuǎn)的鏈接。
a站點(diǎn)就是普通的登陸方式(校驗(yàn)用戶密碼),校驗(yàn)成功后做一些處理。需要生成一個(gè)ticket,具體怎么生成都可以,只要安全就可以了。然后存儲到Cache里面。這里有疑問,后面總結(jié)。登陸成功后直接跳轉(zhuǎn)到\(url就可以了。
``` php private function getTicketUrl(\)source) { \(ticket = md5(time()+key); Cache::put(\)ticket, $user, 120); $url = $source . '?ticket=' . $ticket; return $url; }
假如說a站帶著ticket跳轉(zhuǎn)到b站(b.baidu.com?ticket=xxxxxxxxxxxxxxxx```)
b站做一個(gè)全局的過濾器,接受這個(gè)ticket然后請求a站驗(yàn)證ticket是否為a生成的。
b站過濾器App\Http\Middleware\CasAuthenticate代碼,這里判斷是否有ticket并發(fā)送請求到a站校驗(yàn)。如果是登陸的,則拿到用戶UID進(jìn)行登陸。
public function handle($request, Closure $next) { $ticket = $request->input('ticket'); if ($ticket) { $result = json_decode('http://a.baidu.com' . '/auth/check-ticket?ticket=' . $ticket), true); if ($result['state'] == "SUCCESS") { $request->session()->flush(); Auth::loginUsingId($result['result']['uid']); return redirect(redirect()->getUrlGenerator()->current()); } } return $next($request); }
邏輯算是完成了,但是有幾個(gè)疑問。
1.我這個(gè)實(shí)現(xiàn),我自己都不知道是不是對的,這是我根據(jù)原理寫出來的。
2.假如b站現(xiàn)在跳轉(zhuǎn)到c站,由于b站活躍比較頻繁,session一直都在,而a站的緩存時(shí)間極有可能已經(jīng)過期了,此時(shí)從b站跳轉(zhuǎn)到c站,c站跳轉(zhuǎn)到a站去判斷登陸,結(jié)果發(fā)現(xiàn)已經(jīng)失效了,還是得登陸。所以這是有問題的,由于我們業(yè)務(wù)模塊相關(guān)性差,不會隨意跳轉(zhuǎn),所以暫不考慮這樣的問題。但這確實(shí)是我的一個(gè)問題。我沒想清楚。
有關(guān)SSO單點(diǎn)登錄的PHP實(shí)現(xiàn)方法(Laravel框架),小編就給大家介紹這么多,希望對大家有所幫助!
您可能感興趣的文章:
- 基于.Net的單點(diǎn)登錄(SSO)實(shí)現(xiàn)解決方案
- php的sso單點(diǎn)登錄實(shí)現(xiàn)方法
- asp.net簡單實(shí)現(xiàn)單點(diǎn)登錄(SSO)的方法

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Die Bewertung des Kosten-/Leistungsverh?ltnisses des kommerziellen Supports für ein Java-Framework umfasst die folgenden Schritte: Bestimmen Sie das erforderliche Ma? an Sicherheit und Service-Level-Agreement-Garantien (SLA). Die Erfahrung und das Fachwissen des Forschungsunterstützungsteams. Erw?gen Sie zus?tzliche Services wie Upgrades, Fehlerbehebung und Leistungsoptimierung. W?gen Sie die Kosten für die Gesch?ftsunterstützung gegen Risikominderung und Effizienzsteigerung ab.

Die Lernkurve eines PHP-Frameworks h?ngt von Sprachkenntnissen, Framework-Komplexit?t, Dokumentationsqualit?t und Community-Unterstützung ab. Die Lernkurve von PHP-Frameworks ist im Vergleich zu Python-Frameworks h?her und im Vergleich zu Ruby-Frameworks niedriger. Im Vergleich zu Java-Frameworks haben PHP-Frameworks eine moderate Lernkurve, aber eine kürzere Einstiegszeit.

Laut Benchmarks sind Quarkus (schneller Start, geringer Speicher) oder Micronaut (TechEmpower ausgezeichnet) für kleine, leistungsstarke Anwendungen die ideale Wahl. SpringBoot eignet sich für gro?e Full-Stack-Anwendungen, weist jedoch etwas langsamere Startzeiten und Speichernutzung auf.

Das leichte PHP-Framework verbessert die Anwendungsleistung durch geringe Gr??e und geringen Ressourcenverbrauch. Zu seinen Merkmalen geh?ren: geringe Gr??e, schneller Start, geringer Speicherverbrauch, verbesserte Reaktionsgeschwindigkeit und Durchsatz sowie reduzierter Ressourcenverbrauch. Praktischer Fall: SlimFramework erstellt eine REST-API, nur 500 KB, hohe Reaktionsf?higkeit und hoher Durchsatz

Das Verfassen einer klaren und umfassenden Dokumentation ist für das Golang-Framework von entscheidender Bedeutung. Zu den Best Practices geh?rt die Befolgung eines etablierten Dokumentationsstils, beispielsweise des Go Coding Style Guide von Google. Verwenden Sie eine klare Organisationsstruktur, einschlie?lich überschriften, Unterüberschriften und Listen, und sorgen Sie für eine Navigation. Bietet umfassende und genaue Informationen, einschlie?lich Leitf?den für den Einstieg, API-Referenzen und Konzepte. Verwenden Sie Codebeispiele, um Konzepte und Verwendung zu veranschaulichen. Halten Sie die Dokumentation auf dem neuesten Stand, verfolgen Sie ?nderungen und dokumentieren Sie neue Funktionen. Stellen Sie Support und Community-Ressourcen wie GitHub-Probleme und Foren bereit. Erstellen Sie praktische Beispiele, beispielsweise eine API-Dokumentation.

W?hlen Sie das beste Go-Framework basierend auf Anwendungsszenarien aus: Berücksichtigen Sie Anwendungstyp, Sprachfunktionen, Leistungsanforderungen und ?kosystem. G?ngige Go-Frameworks: Gin (Webanwendung), Echo (Webdienst), Fiber (hoher Durchsatz), gorm (ORM), fasthttp (Geschwindigkeit). Praktischer Fall: Erstellen einer REST-API (Fiber) und Interaktion mit der Datenbank (gorm). W?hlen Sie ein Framework: W?hlen Sie fasthttp für die Schlüsselleistung, Gin/Echo für flexible Webanwendungen und gorm für die Datenbankinteraktion.

Roadmap zum Java-Framework-Lernen für verschiedene Bereiche: Webentwicklung: SpringBoot und PlayFramework. Persistenzschicht: Ruhezustand und JPA. Serverseitige reaktive Programmierung: ReactorCore und SpringWebFlux. Echtzeit-Computing: ApacheStorm und ApacheSpark. Cloud Computing: AWS SDK für Java und Google Cloud Java.

Beim Go-Framework-Lernen gibt es fünf Missverst?ndnisse: überm??iges Vertrauen in das Framework und eingeschr?nkte Flexibilit?t. Wenn Sie die Framework-Konventionen nicht befolgen, wird es schwierig, den Code zu warten. Die Verwendung veralteter Bibliotheken kann zu Sicherheits- und Kompatibilit?tsproblemen führen. Die überm??ige Verwendung von Paketen verschleiert die Codestruktur. Das Ignorieren der Fehlerbehandlung führt zu unerwartetem Verhalten und Abstürzen.
