Golangを使ってユーザーログイン機能を実装する方法

PHPz
リリース: 2023-04-11 10:03:19
オリジナル
1765 人が閲覧しました

Golang は、大規模なエンタープライズ レベルのアプリケーションの開発に適した、効率的で信頼性の高いプログラミング言語です。今日のインターネット分野において、ユーザーのログイン機能は欠かせないものとなっていますが、Golang を使用してユーザーのログイン機能を実装するにはどうすればよいでしょうか?この記事では、ログインを実装するための Golang の関連知識を以下の観点から紹介します。

1. Golang を使用してユーザー ログイン ページをデザインする

Golang では、Web フレームワークを使用してユーザー ログイン ページを構築できます。現在人気のある Web フレームワークには、Beego、Echo などがあります。この記事では、例として Beego フレームワークを使用して、ユーザー ログイン ページを作成する方法を示します。

まず、Beego フレームワークと、対応する Beego コマンド ライン ツールをインストールする必要があります。コマンド ライン環境で次のコマンドを入力して、インストールを完了します。

    go get github.com/astaxie/beego
    go get github.com/beego/bee
ログイン後にコピー

Beego をインストールした後、Beego のコマンド ライン ツールを使用して新しいプロジェクトを作成できます。コマンド ラインに次のコマンドを入力します。

    bee new projectname
ログイン後にコピー

ここで、「projectname」は、作成するプロジェクトの名前です。プロジェクトを作成した後、プロジェクト内にユーザー名とパスワードの入力ボックスとログイン ボタンを含む新しいログイン テンプレートを作成する必要があります。ページを構築した後、ユーザーのアカウントとパスワードが正しいかどうかを確認するなど、コード内でログイン ロジックを処理する必要があります。正しい場合は、必要なページにジャンプします。そうでない場合、ユーザーはログインに失敗するように求められます。 。

2. Golang を使用してデータベースに接続する

ユーザーがログインするとき、ユーザーが入力したアカウントとパスワードをデータベース内のデータと比較して、その正確性を検証する必要があります。ユーザーのログイン情報。ここでは、Golang の組み込み SQL パッケージを使用してデータベース接続操作を実装し、Golang のログイン要件を実現します。

コードでは、次のメソッドを使用してデータベースに接続できます:

    import (
        "database/sql"
        _ "github.com/go-sql-driver/mysql"
    )

    func main() {
        db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname")
        if err != nil {
            log.Fatal(err)
        }
        defer db.Close()
    }
ログイン後にコピー

ここで、db はデータベース接続オブジェクト、user はデータベース ユーザー名、password はデータベース パスワード、 localhost:3306 はデータベースが配置されているサーバーのアドレスとポートを表し、dbname はデータベースの名前です。このようにして、データベースに接続できます。

3. Golang を使用して Cookie を実装する ログイン

Cookie は、ブラウザとサーバーの間で受け渡される、ユーザーによって保持される情報ファイルです。ユーザーがログインに成功すると、サーバーはユーザーのログイン情報を Cookie に保存し、次回のアクセス時のログイン検証のためにブラウザにその情報を返します。 Golang では、http.Cookie パッケージを使用して Cookie 関連の操作を処理できます。

コードでは、次のメソッドを使用して Cookie の操作を実装できます。

    import (
        "net/http"
    )

    func main() {
        http.HandleFunc("/", handler)
        http.ListenAndServe(":8080", nil)
    }

    func handler(w http.ResponseWriter, r *http.Request) {
        c := http.Cookie{
            Name: "cookie_name",
            Value: "cookie_value",
        }
        http.SetCookie(w, &c)

        c, err := r.Cookie("cookie_name")
        if err != nil {
            if err == http.ErrNoCookie {
                fmt.Fprintf(w, "No cookie found")
            } else {
                log.Fatal(err)
            }
        } else {
            fmt.Fprintf(w, "Cookie value is %s", c.Value)
        }
    }
ログイン後にコピー

上記のコードでは、最初に http.Cookie を通じて Cookie オブジェクトを初期化し、それをブラウザ終了。次回ブラウザがこのページにアクセスすると、サーバーは Cookie 情報を読み取り、関連する操作を実行します。

4. Golang は OAuth2.0 ログインを実装します

OAuth2.0 は、安全でオープンかつシンプルな認証方法を提供する認証フレームワークであり、開発者に統合されたサードパーティ プラットフォームの認証サービス メカニズムを提供します。 。 Golang では、go-oauth2/oauth ライブラリを使用して OAuth2.0 ログインを実装できます。

コードでは、次のメソッドを使用して OAuth2.0 ログインを実装できます:

    import (
        "github.com/markbates/goth/gothic"
        "github.com/markbates/goth/providers/google"
    )

    func main() {
        var g GoogleProviderCredentials

        g = GoogleProviderCredentials{
            clientID: "client_id",
            clientSecret: "client_secret",
            redirectURI: "redirect_uri",
        }

        goth.UseProviders(
            google.New(g.clientID, g.clientSecret, g.redirectURI, "email", "profile"),
        )

        route.GET("/auth/google/login", Controller.AuthGoogleLogin)
        route.GET("/auth/google/callback", Controller.AuthGoogleCallback)

        if err := http.ListenAndServe(":8080", nil); err != nil {
            fmt.Println(err)
        }
    }

    func AuthGoogleLogin(c *gin.Context) {
        gotham.LoginHandler(c.Writer, c.Request)
    }

    func AuthGoogleCallback(c *gin.Context) {
        user, err := gothic.CompleteUserAuth(c.Writer, c.Request)
        if err != nil {
            log.Stderr("{Error: %s}", err)
        }

        fmt.Println(user.AccessToken)

        c.Redirect(http.StatusMovedPermanently, "/")
    }
ログイン後にコピー

上記のコードでは、最初に gotham.UseProviders メソッドを使用してサードパーティ サービス プラットフォームを実装します。 Googleコネクションなど。ユーザーがログイン インターフェースを通じてログイン プラットフォームを選択し、認証に成功すると、Google バックエンドで設定したコールバック アドレスに直接リダイレクトされ、OAuth2.0 認証プロセス全体が完了します。

結論

上記の紹介を通じて、誰もがすでに Golang のログインと関連テクノロジについて理解したと思います。 Web フレームワークの使用、データベースのリンク、Co​​okie の操作、OAuth2.0 ログイン機能の実装など、Golang は非常に強力で、実際の開発のニーズに応えます。

以上がGolangを使ってユーザーログイン機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート