ホームページ > バックエンド開発 > Golang > golang ログインリクエスト

golang ログインリクエスト

王林
リリース: 2023-05-16 13:00:38
オリジナル
645 人が閲覧しました

インターネットの継続的な発展に伴い、ユーザーが使用する前にログインを必要とするサービスが増えているため、ログイン機能はすべての Web アプリケーションに必須の機能の 1 つとなっています。 Golangを利用してログイン機能を開発すると、業務効率や保守性の向上に効果的です。

Golang (Go とも呼ばれる) は、Google によって開発されたオープンソース プログラミング言語であり、その発表以来、Web アプリケーションの開発に広く使用されています。 Golang は効率的で、クロスプラットフォームで、簡単に始めることができるため、同時実行性の高い Web サービスの開発に推奨される言語の 1 つです。

この記事では、Golang を使用してログイン リクエストを実装する方法を紹介します。まず、ログイン要求を実装するために必要な手順について説明します。次に、ログイン リクエストの実装方法とテクニックをよりよく理解できるように、具体的なサンプル プログラムを示します。

ログイン リクエストを実装する手順

ログイン リクエストを実装する手順には、主に次の内容が含まれます。

  1. ログイン インターフェイスを作成します。

ユーザー ログイン機能の最初のステップは、ユーザー名とパスワードを入力するためのログイン インターフェイスを作成することです。通常、ログイン インターフェイスは、ユーザー名とパスワードの 2 つのテキスト ボックスで構成されます。

    #ユーザーのログイン入力を取得します。
Golang では、Web フレームワーク (Gin、Beego など) を使用して、ユーザーが入力したユーザー名とパスワードを取得できます。具体的な実装方法は、フォームデータをPOSTを通じてサーバーに送信し、サーバーはRequestオブジェクトを通じてPOSTデータを取得できます。

    ユーザー入力を検証します。
ユーザー入力を取得した後、入力されたユーザー名とパスワードを検証する必要があります。通常、まず入力されたユーザー名とパスワードがデータベースに保存されているものと一致するかどうかを比較します。一致する場合は次のステップに進むことができますが、一致しない場合はエラー メッセージがユーザーに返されます。

    ログイン要求を作成します。
ユーザーが入力したユーザー名とパスワードが検証されると、サーバーはユーザーの安全なトークンを生成します。これによりユーザーの身元を特定し、ユーザーのログイン ステータスを保存できます。トークンが生成された後、サーバーはそれをクライアントに送信できるパケット (JSON 形式など) に構造化する必要があります。

    ログイン要求を送信します。
http パッケージまたは Web フレームワークの公式またはサードパーティの拡張ライブラリを介してログイン リクエストを送信するコードを簡単に作成できます。ログイン要求を送信することにより、サーバーはトークンをクライアントに送信します。クライアントはトークンを受信した後、それを保存して後続の操作に使用できます。

サンプル プログラム

以下では、簡単なログイン要求サンプル プログラムを使用して、上記の手順の実装を示します。まず、ユーザー名とパスワードの 2 つの入力ボックスと送信ボタンを含む単純な HTML ログイン ページを作成する必要があります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form method="post" action="/login">
    <h1>登录页面</h1>
    <label>用户名:</label><br/>
    <input type="text" name="username"><br/><br/>
    <label>密码:</label><br/>
    <input type="password" name="password"><br/><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>
ログイン後にコピー

Golang では、Gin フレームワークを使用してログイン リクエストを処理できます。まず、gin ライブラリをインポートする必要があります:

import (
"github.com/gin-gonic/gin"
)
ログイン後にコピー

次に、Gin エンジンとルーティング ルールを作成する必要があります:

router := gin.Default()
router.POST("/login", handleLogin)
ログイン後にコピー

次に、使用される handleLogin 関数を作成する必要があります。ログイン要求を処理するには:

func handleLogin(c *gin.Context) {
    username := c.PostForm("username")
    password := c.PostForm("password")

    if username == "admin" && password == "123456" {
        token := generateToken() // 生成令牌
        c.JSON(http.StatusOK, gin.H{
            "code": 1,
            "msg":  "登录成功",
            "data": token,
        })
    } else {
        c.JSON(http.StatusOK, gin.H{
            "code": 0,
            "msg":  "用户名或密码错误",
            "data": "",
        })
    }
}
ログイン後にコピー

handleLogin 関数では、まずユーザーが入力したユーザー名とパスワードを取得し、データベースと比較して検証します。検証に合格した場合は、トークンを生成して JSON 形式のデータ パケットに構築して返しますが、検証に失敗した場合は、直接エラー メッセージを返します。

トークンを生成するコードは次のとおりです:

func generateToken() string {
    return randString(32)
}
ログイン後にコピー

generateToken 関数では、randString 関数を呼び出して、長さ 32 のランダムな文字列を生成します。これが、生成したトークンです。 。

func randString(len int) string {
    bytes := make([]byte, len)
    if _, err := rand.Read(bytes); err != nil {
        log.Fatalln(err)
    }
    return base64.StdEncoding.EncodeToString(bytes)
}
ログイン後にコピー

最後に、ユーザーがブラウザを通じてログイン ページにアクセスできるように、HTML ログイン ページを Jin エンジンと組み合わせる必要があります。コードは次のとおりです。

router.LoadHTMLGlob("templates/*")

router.GET("/", func(c *gin.Context) {
    c.HTML(http.StatusOK, "login.html", gin.H{})
})

router.Run(":8080")
ログイン後にコピー

プログラムでは、最初に router.LoadHTMLGlob 関数を呼び出して、HTML テンプレートのパスを指定します。次に、デフォルトのルーティング ルールをバインドして、ユーザーのリクエストをログイン ページにリダイレクトします。最後に、router.Run 関数を呼び出して、プログラムがローカルで HTTP サーバーを起動し、ポート 8080 でリッスンできるようにします。

プログラムを実行した後、ユーザーはブラウザを通じて http://localhost:8080 にアクセスし、ログイン ページにアクセスできます。入力されたユーザー名とパスワードが正しい場合は、生成されたトークンを含む JSON 形式のパケットが受信されますが、入力されたユーザー名とパスワードが間違っている場合は、エラー メッセージが返されます。

概要

この記事では、Golang を使用してログイン リクエストを実装する方法を紹介します。実装手順には、ログイン インターフェイスの作成、ユーザー ログイン入力の取得、ユーザー入力の検証、ログイン リクエストの作成、ログイン リクエストの送信が含まれます。また、Golang を使用してログイン リクエストを開発する方法をよりよく理解できる簡単なサンプル プログラムも提供しています。もちろん、具体的な実装方法やテクニックは、さまざまなプロジェクトやニーズに応じて調整し、最適化する必要があります。

以上がgolang ログインリクエストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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