백엔드 개발 Golang Beego 및 OAuth2를 사용하여 타사 로그인 구현

Beego 및 OAuth2를 사용하여 타사 로그인 구현

Jun 22, 2023 pm 08:34 PM
oauth 제3자 로그인 beego

인터넷의 급속한 발전으로 인해 제3자 로그인은 온라인 생활에서 없어서는 안 될 부분이 되었습니다. 제3자 로그인은 사용자에게 보다 편리하고 빠르며 안전한 로그인 방법을 제공하며 기존 등록 로그인 방법보다 더 널리 사용됩니다. 현재 시장에 나와 있는 제3자 로그인에는 주로 QQ, WeChat, Weibo와 같은 대규모 소셜 플랫폼이 포함됩니다. 타사 로그인 기능을 빠르게 구현하는 방법은 무엇입니까? 이 기사에서는 Beego 및 OAuth2를 사용하여 타사 로그인 기능을 구현하는 방법을 소개합니다.

1. Beego 소개

Beego는 빠른 오픈 소스 Go 프로그래밍 프레임워크입니다. 유연성과 확장성이 뛰어나며 수많은 도구와 라이브러리를 제공합니다. Beego는 개발자가 웹 애플리케이션을 신속하게 구축하는 데 도움을 주며 자동 경로 관리, 템플릿 시스템, 정적 파일 제공과 같은 몇 가지 중요한 기능을 제공합니다.

2. OAuth2 프로토콜 소개

OAuth2는 사용자가 비밀번호 및 기타 민감한 정보를 제3자와 공유하지 않고도 사용자를 대신하여 제3자 서비스에 액세스할 수 있도록 다른 애플리케이션을 승인할 수 있는 인증 프레임워크 프로토콜입니다. 이 프로토콜은 리소스 소유자, 리소스 서버, 클라이언트 및 인증 서버의 네 가지 역할을 정의합니다. 그 중 자원 소유자는 접근 권한을 가진 사용자, 자원 서버는 정보 자원을 호스팅하는 서버, 클라이언트는 보호되는 자원에 대한 접근을 요청하는 소프트웨어 프로그램, 인증 서버는 클라이언트의 권한을 검증하는 것을 말한다. 신원 확인 및 보호된 리소스에 대한 액세스 권한 부여.

3. Beego 및 OAuth2를 사용하여 타사 로그인 구현

  1. Beego 프로젝트 만들기

먼저 로컬 개발 및 테스트를 위한 Beego 프로젝트를 만들어야 합니다. 다음 명령을 사용하세요(Beego를 먼저 설치해야 함):

bee new thirdpartylogin
로그인 후 복사
  1. 필요한 라이브러리 설치

github.com/astaxie/beego를 포함하여 몇 가지 필요한 라이브러리를 설치해야 합니다. github.com/astaxie/beego/orm, 다음 명령을 사용하여 설치할 수 있습니다: github.com/astaxie/beegogithub.com/astaxie/beego/orm,可以使用以下命令安装:

go get github.com/astaxie/beego
go get github.com/astaxie/beego/orm
로그인 후 복사
  1. 创建数据库

我们需要创建一个数据库,以便存储用户信息和第三方登录信息。可以使用 MySQL 或 PostgreSQL 数据库。在本文中,我们使用 MySQL 数据库。以下是创建用户表和第三方登录表的 SQL 语句:

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;
로그인 후 복사
  1. 配置第三方登录

我们需要使用第三方登录进行认证。目前市面上有多种第三方登录方式,包括 QQ、微信、微博等大型社交平台。我们以 QQ 登录为例进行讲解。

首先,我们需要在 QQ 互联开放平台(https://connect.qq.com/)注册一个应用程序,以获得App IDApp Key。其次,我们需要在 Beego 项目中添加如下代码,获取用户授权:

func QQLogin(c *beego.Controller) {
    var state = c.GetString("state")
    var oauth = conf.GetQQOAuthConfig(state)

    authURL := oauth.AuthCodeURL(state)
    c.Redirect(http.StatusTemporaryRedirect, authURL)
} 
로그인 후 복사

在以上代码中,state参数用于识别用户请求,oauth对象包含了 QQ 登录所需的配置信息。我们使用AuthCodeURL方法生成授权地址,并将用户重定向至授权页面。

接着,我们需要添加如下代码,接收 QQ 回调请求并获取访问令牌:

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, "/")
    }
}
로그인 후 복사

在以上代码中,我们使用Exchange方法获取访问令牌,使用fetchQQUserInfo方法获取 QQ 用户信息,其中openid

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)
    })
}
로그인 후 복사
    데이터베이스 생성
    1. 사용자 정보를 저장할 데이터베이스를 생성해야 합니다. 타사 로그인 정보. MySQL 또는 PostgreSQL 데이터베이스를 사용할 수 있습니다. 이 기사에서는 MySQL 데이터베이스를 사용합니다. 다음은 사용자 테이블과 타사 로그인 테이블을 생성하는 SQL 문입니다.
    rrreee

      Configure third-party login

      인증을 위해 타사 로그인을 사용해야 합니다. 현재 시장에는 QQ, WeChat, Weibo와 같은 대규모 소셜 플랫폼을 포함하여 다양한 제3자 로그인 방법이 있습니다. QQ 로그인을 예로 들어 설명하겠습니다.

      먼저 앱 ID앱 키를 얻기 위해 QQ 인터넷 오픈 플랫폼(https://connect.qq.com/)에 애플리케이션을 등록해야 합니다. 둘째, 사용자 인증을 얻으려면 Beego 프로젝트에 다음 코드를 추가해야 합니다.

      rrreee

      위 코드에서 state 매개변수는 사용자 요청을 식별하는 데 사용되며 oauth 객체에는 QQ 로그인에 필요한 구성 정보가 포함되어 있습니다. AuthCodeURL 메소드를 사용하여 인증 주소를 생성하고 사용자를 인증 페이지로 리디렉션합니다. 🎜🎜다음으로 QQ 콜백 요청을 수신하고 액세스 토큰을 얻기 위해 다음 코드를 추가해야 합니다. 🎜rrreee🎜위 코드에서는 Exchange 메소드를 사용하여 액세스 토큰을 얻고 사용합니다. fetchQQUserInfo 메소드는 QQ 사용자 정보를 가져옵니다. 여기서 <code>openid는 QQ 사용자를 고유하게 식별하는 데 사용됩니다. 다음으로 데이터베이스에 QQ 사용자 레코드가 있는지 확인하고, 있으면 액세스 토큰을 업데이트하고, 그렇지 않으면 새 계정 레코드를 생성합니다. 🎜🎜🎜인증 및 승인🎜🎜🎜마지막으로 사용자가 제3자를 통해 로그인하고 승인되었는지 확인하는 인증 및 승인 기능을 추가해야 합니다. 🎜rrreee🎜위 코드에서는 세션에 사용자 ID가 있는지 확인하고, 없으면 로그인 페이지로 리디렉션하고, 그렇지 않으면 요청 처리를 계속합니다. 🎜🎜4. 요약🎜🎜이 글에서는 Beego와 OAuth2를 사용하여 타사 로그인을 구현하는 방법을 소개합니다. QQ 로그인을 예로 들어 사용자 인증 획득, 액세스 토큰 획득, 사용자 기록 확인 및 기타 기능을 소개합니다. Beego 및 OAuth2를 사용하여 타사 로그인 기능을 구현하면 사용자에게 더 편리하고 빠르며 안전한 로그인 방법을 제공할 수 있으며 개발자에게는 더 효율적이고 더 나은 개발 경험을 제공할 수도 있습니다. 🎜

위 내용은 Beego 및 OAuth2를 사용하여 타사 로그인 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 및 OAuth: Microsoft 로그인 통합 구현 PHP 및 OAuth: Microsoft 로그인 통합 구현 Jul 28, 2023 pm 05:15 PM

PHP 및 OAuth: Microsoft 로그인 통합 구현 인터넷이 발전하면서 편리한 등록 및 로그인 환경을 제공하기 위해 사용자가 제3자 계정을 사용하여 로그인할 수 있도록 지원해야 하는 웹 사이트와 응용 프로그램이 점점 더 많아지고 있습니다. Microsoft 계정은 전 세계적으로 널리 사용되는 계정 중 하나이며 많은 사용자가 Microsoft 계정을 사용하여 웹 사이트 및 응용 프로그램에 로그인하기를 원합니다. Microsoft 로그인 통합을 달성하기 위해 OAuth(Open Authorization) 프로토콜을 사용할 수 있습니다. OAuth는 사용자가 제3자 애플리케이션에 권한을 부여하여 자신을 대신할 수 있도록 하는 개방형 표준 인증 프로토콜입니다.

PHP의 OAuth: JWT 인증 서버 만들기 PHP의 OAuth: JWT 인증 서버 만들기 Jul 28, 2023 pm 05:27 PM

PHP의 OAuth: JWT 권한 부여 서버 만들기 모바일 애플리케이션이 증가하고 프런트엔드와 백엔드가 분리되는 추세로 인해 OAuth는 최신 웹 애플리케이션에서 없어서는 안 될 부분이 되었습니다. OAuth는 표준화된 프로세스와 메커니즘을 제공하여 사용자의 리소스를 무단 액세스로부터 보호하는 인증 프로토콜입니다. 이 기사에서는 PHP를 사용하여 JWT(JSONWebTokens) 기반 OAuth 인증 서버를 만드는 방법을 알아봅니다. JWT는 일종의

PHP 및 OAuth를 사용하여 Google 드라이브 통합을 수행하는 방법 PHP 및 OAuth를 사용하여 Google 드라이브 통합을 수행하는 방법 Jul 31, 2023 pm 04:41 PM

PHP 및 OAuth를 사용하여 GoogleDrive 통합을 수행하는 방법 GoogleDrive는 사용자가 클라우드에 파일을 저장하고 다른 사용자와 공유할 수 있는 널리 사용되는 클라우드 스토리지 서비스입니다. GoogleDriveAPI를 통해 PHP를 사용하여 GoogleDrive와 통합하여 파일 업로드, 다운로드, 삭제 및 기타 작업을 구현하는 코드를 작성할 수 있습니다. GoogleDriveAPI를 사용하려면 OAuth를 통해 인증해야 하며

PHP에서 OAuth2 인증 방법 및 구현 PHP에서 OAuth2 인증 방법 및 구현 Aug 07, 2023 pm 10:53 PM

PHP의 OAuth2 인증 방법 및 구현 인터넷이 발전함에 따라 점점 더 많은 애플리케이션이 타사 플랫폼과 상호 작용해야 합니다. 사용자 개인 정보 보호 및 보안을 보호하기 위해 많은 타사 플랫폼에서는 OAuth2 프로토콜을 사용하여 사용자 인증을 구현합니다. 이 기사에서는 OAuth2 인증 방법과 PHP에서의 구현을 소개하고 해당 코드 예제를 첨부합니다. OAuth2는 사용자가 언급하지 않고도 타사 애플리케이션이 다른 서비스 공급자의 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 인증 프레임워크입니다.

기술 세계를 탐험할 수 있도록 Go 언어 오픈 소스 프로젝트 5개를 선택했습니다. 기술 세계를 탐험할 수 있도록 Go 언어 오픈 소스 프로젝트 5개를 선택했습니다. Jan 30, 2024 am 09:08 AM

오늘날 급속한 기술 발전의 시대에 프로그래밍 언어는 비가 내린 뒤 버섯처럼 솟아오르고 있습니다. 많은 주목을 받고 있는 언어 중 하나가 바로 Go 언어인데, 단순성, 효율성, 동시성 안전성 등 다양한 기능으로 많은 개발자들에게 사랑을 받고 있습니다. Go 언어는 뛰어난 오픈 소스 프로젝트가 많이 포함된 강력한 생태계로 유명합니다. 이 기사에서는 선택된 Go 언어 오픈 소스 프로젝트 5개를 소개하고 독자가 Go 언어 오픈 소스 프로젝트의 세계를 탐색하도록 안내합니다. KubernetesKubernetes는 자동화를 위한 오픈 소스 컨테이너 오케스트레이션 엔진입니다.

타사 로그인에 Hyperf 프레임워크를 사용하는 방법 타사 로그인에 Hyperf 프레임워크를 사용하는 방법 Oct 25, 2023 am 09:16 AM

타사 로그인을 위해 Hyperf 프레임워크를 사용하는 방법 소개: 인터넷이 발전하면서 타사 로그인이 많은 웹사이트와 애플리케이션의 표준 기능이 되었습니다. 제3자 로그인을 통해 사용자는 제3자 플랫폼의 기존 계정 정보를 사용하여 다른 웹사이트나 애플리케이션에 로그인할 수 있으므로 번거로운 등록 절차를 피하고 사용자 경험을 크게 향상시킬 수 있습니다. 이 문서에서는 특정 코드 예제와 함께 Hyperf 프레임워크를 사용하여 타사 로그인 기능을 구현하는 방법을 소개합니다. 1. 준비작업 제3자 로그인 구현을 시작하기 전에,

QQ 로그인 통합을 위해 PHP와 OAuth를 사용하는 방법 QQ 로그인 통합을 위해 PHP와 OAuth를 사용하는 방법 Jul 31, 2023 pm 12:37 PM

QQ 로그인 통합을 위한 PHP 및 OAuth 사용 방법 소개: 소셜 미디어가 발전하면서 점점 더 많은 웹사이트와 애플리케이션에서 사용자가 빠르게 등록하고 로그인할 수 있도록 제3자 로그인 기능을 제공하기 시작했습니다. 중국 최대 소셜 미디어 플랫폼 중 하나인 QQ는 많은 웹사이트와 애플리케이션에서 제공하는 제3자 로그인 서비스이기도 합니다. 이 기사에서는 QQ 로그인 통합을 위해 PHP 및 OAuth를 사용하는 방법에 대한 단계를 코드 예제와 함께 소개합니다. 1단계: QQ 오픈 플랫폼 개발자로 등록하세요. QQ 로그인 통합을 시작하기 전에,

PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현 PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현 Aug 08, 2023 am 10:53 AM

PHP를 사용하여 OAuth2를 기반으로 제3자 승인 및 인증을 구현합니다. OAuth2는 제3자 애플리케이션이 사용자 리소스에 액세스할 수 있도록 승인하는 데 사용되는 개방형 표준 프로토콜입니다. 간단하고 안전하며 유연하며 다양한 웹 애플리케이션과 모바일 애플리케이션에서 널리 사용됩니다. PHP에서는 타사 라이브러리를 사용하여 OAuth2 인증 및 인증을 구현할 수 있습니다. 이 기사에서는 샘플 코드를 결합하여 PHP를 사용하여 OAuth2를 기반으로 제3자 인증 및 인증을 구현하는 방법을 소개합니다. 먼저 Compos를 사용해야 합니다.

See all articles