Heim >Backend-Entwicklung >Golang >Implementieren Sie die Anmeldung von Drittanbietern mit Beego und OAuth2
Mit der rasanten Entwicklung des Internets ist die Anmeldung über Dritte zu einem unverzichtbaren Bestandteil des Online-Lebens geworden. Die Drittanbieter-Anmeldung bietet Benutzern eine bequemere, schnellere und sicherere Anmeldemethode und ist beliebter als die herkömmliche Registrierungs-Anmeldemethode. Zu den Anmeldungen von Drittanbietern auf dem Markt gehören derzeit hauptsächlich große soziale Plattformen wie QQ, WeChat und Weibo. Wie kann die Drittanbieter-Anmeldefunktion schnell implementiert werden? In diesem Artikel wird erläutert, wie Sie Beego und OAuth2 verwenden, um Anmeldefunktionen von Drittanbietern zu implementieren.
1. Einführung in Beego
Beego ist ein Open-Source-Framework für die schnelle Go-Programmierung. Es ist äußerst flexibel und erweiterbar und bietet eine große Anzahl an Tools und Bibliotheken. Beego kann Entwicklern beim schnellen Erstellen von Webanwendungen helfen und bietet einige wichtige Funktionen wie automatische Routenverwaltung, Vorlagensystem und statische Dateibereitstellung.
2. Einführung in das OAuth2-Protokoll
OAuth2 ist ein Autorisierungs-Framework-Protokoll, das es Benutzern ermöglicht, andere Anwendungen für den Zugriff auf Dienste von Drittanbietern zu autorisieren, ohne Passwörter und andere vertrauliche Informationen an Dritte weiterzugeben. Dieses Protokoll definiert vier Rollen: Ressourcenbesitzer, Ressourcenserver, Client und Authentifizierungsserver. Unter ihnen bezieht sich der Ressourcenbesitzer auf den Benutzer mit Zugriffsrechten, der Ressourcenserver bezieht sich auf den Server, der die Informationsressourcen hostet, der Client bezieht sich auf das Softwareprogramm, das Zugriff auf geschützte Ressourcen anfordert, und der Authentifizierungsserver bezieht sich auf die Überprüfung des Clients Identität und Autorisierung des Zugriffs auf geschützte Ressourcendienste.
3. Verwenden Sie Beego und OAuth2, um die Anmeldung eines Drittanbieters zu implementieren.
bee new thirdpartylogin
Notwendige Bibliotheken installieren
github.com/astaxie/beego
und github.com/astaxie/beego/orm
, das mit dem folgenden Befehl installiert werden kann: go get github.com/astaxie/beego go get github.com/astaxie/beego/orm
github.com/astaxie/beego
和github.com/astaxie/beego/orm
,可以使用以下命令安装:
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `password` varchar(128) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `oauth` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL, `provider` varchar(64) NOT NULL, `provider_user_id` varchar(64) NOT NULL, `access_token` varchar(128) NOT NULL, `refresh_token` varchar(128) NOT NULL, `expire_at` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
我们需要创建一个数据库,以便存储用户信息和第三方登录信息。可以使用 MySQL 或 PostgreSQL 数据库。在本文中,我们使用 MySQL 数据库。以下是创建用户表和第三方登录表的 SQL 语句:
func QQLogin(c *beego.Controller) { var state = c.GetString("state") var oauth = conf.GetQQOAuthConfig(state) authURL := oauth.AuthCodeURL(state) c.Redirect(http.StatusTemporaryRedirect, authURL) }
我们需要使用第三方登录进行认证。目前市面上有多种第三方登录方式,包括 QQ、微信、微博等大型社交平台。我们以 QQ 登录为例进行讲解。
首先,我们需要在 QQ 互联开放平台(https://connect.qq.com/)注册一个应用程序,以获得App ID
和App Key
。其次,我们需要在 Beego 项目中添加如下代码,获取用户授权:
func QQLoginCallback(c *beego.Controller) { var state = c.GetString("state") var code = c.GetString("code") var oauth = conf.GetQQOAuthConfig(state) token, err := oauth.Exchange(context.TODO(), code) if err != nil { log.Println(err) c.Abort("500") } data, err := fetchQQUserInfo(token.AccessToken) if err != nil { log.Println(err) c.Abort("500") } openid := data.GetString("openid") if openid == "" { log.Println("openid is blank") c.Abort("500") } account := models.GetAccountByProvider("qq", openid) if account != nil { _ = models.UpdateAccountAccessToken(account, token.AccessToken) c.Redirect(http.StatusTemporaryRedirect, "/") } else { err := models.CreateAccount("qq", openid, token.AccessToken) if err != nil { log.Println(err) c.Abort("500") } c.Redirect(http.StatusTemporaryRedirect, "/") } }
在以上代码中,state
参数用于识别用户请求,oauth
对象包含了 QQ 登录所需的配置信息。我们使用AuthCodeURL
方法生成授权地址,并将用户重定向至授权页面。
接着,我们需要添加如下代码,接收 QQ 回调请求并获取访问令牌:
func AuthRequired(handler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { sess, err := store.Get(r, "session") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if _, ok := sess.Values["user_id"]; !ok { w.Header().Set("Location", "/login") w.WriteHeader(http.StatusSeeOther) return } handler.ServeHTTP(w, r) }) }
在以上代码中,我们使用Exchange
方法获取访问令牌,使用fetchQQUserInfo
方法获取 QQ 用户信息,其中openid
Wir müssen die Drittanbieter-Anmeldung zur Authentifizierung verwenden. Derzeit gibt es eine Vielzahl von Anmeldemethoden von Drittanbietern auf dem Markt, darunter große soziale Plattformen wie QQ, WeChat und Weibo. Nehmen wir zur Erläuterung die QQ-Anmeldung als Beispiel.
Zuerst müssen wir eine Anwendung auf der QQ Internet Open Platform (https://connect.qq.com/) registrieren, um App ID
und App Key
zu erhalten. Zweitens müssen wir dem Beego-Projekt den folgenden Code hinzufügen, um die Benutzerautorisierung zu erhalten:
Im obigen Code wird der Parameter state
verwendet, um die Benutzeranforderung zu identifizieren, und der Parameter oauth Das
-Objekt enthält Konfigurationsinformationen, die für die QQ-Anmeldung erforderlich sind. Wir verwenden die Methode AuthCodeURL
, um die Autorisierungsadresse zu generieren und den Benutzer zur Autorisierungsseite weiterzuleiten.
Als nächstes müssen wir den folgenden Code hinzufügen, um die QQ-Rückrufanforderung zu empfangen und das Zugriffstoken zu erhalten:
rrreee🎜Im obigen Code verwenden wir die MethodeExchange
, um das Zugriffstoken zu erhalten und zu verwenden fetchQQUserInfo-Methode ruft QQ-Benutzerinformationen ab, wobei <code>openid
zur eindeutigen Identifizierung des QQ-Benutzers verwendet wird. Als Nächstes prüfen wir, ob der QQ-Benutzerdatensatz in der Datenbank vorhanden ist. Wenn ja, aktualisieren wir dessen Zugriffstoken. Andernfalls erstellen wir einen neuen Kontodatensatz. 🎜🎜🎜Authentifizierung und Autorisierung🎜🎜🎜Abschließend müssen wir die Authentifizierungs- und Autorisierungsfunktion hinzufügen, um sicherzustellen, dass sich der Benutzer angemeldet und über einen Dritten autorisiert hat. 🎜rrreee🎜Im obigen Code prüfen wir, ob die Benutzer-ID in der Sitzung vorhanden ist. Wenn nicht, leiten wir zur Anmeldeseite weiter, andernfalls fahren wir mit der Verarbeitung der Anfrage fort. 🎜🎜4. Zusammenfassung🎜🎜In diesem Artikel wird beschrieben, wie Sie Beego und OAuth2 verwenden, um die Anmeldung eines Drittanbieters zu implementieren. Wir verwenden die QQ-Anmeldung als Beispiel, um vorzustellen, wie Sie eine Benutzerautorisierung erhalten, Zugriffstoken erhalten, Benutzerdatensätze überprüfen und andere Funktionen ausführen. Die Verwendung von Beego und OAuth2 zur Implementierung der Anmeldefunktion von Drittanbietern kann Benutzern eine bequemere, schnellere und sicherere Anmeldemethode bieten und Entwicklern auch eine effizientere und bessere Entwicklungserfahrung bieten. 🎜
Das obige ist der detaillierte Inhalt vonImplementieren Sie die Anmeldung von Drittanbietern mit Beego und OAuth2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!