<pre id="1gi9s"></pre>

    <ruby id="1gi9s"></ruby>

    \n
    \n\n\n\n

    The index.html is a simple web page that provides a user interface for displaying the login status of a user. It uses Bootstrap for styling and Font Awesome for icons. On page load, it checks the user's authentication status by sending a request to the server with a JWT token stored in localStorage. If the user is logged in, it shows a success message with the user's name and a logout button. If not logged in, it shows a message indicating the user is not logged in and redirects them to the login page after a few seconds.<\/p>\n\n

    \n \n \n login.html\n<\/h3>\n\n\n\n
    \n\n\n    \n    \n    \n    \n<\/head>\n
    

    亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

    \n
    \n\n\n\n

    The login.html page provides a simple login form where users can input their username and password. It uses Bootstrap for styling and Font Awesome for icons. When the user submits the form, a JavaScript function login() sends a POST request to the \/login endpoint with the entered credentials. If the login is successful, the server returns a JWT token, which is stored in localStorage. The page then redirects the user to the home page (\/). If the login fails, an error message is displayed.<\/p>\n\n

    \n \n \n Run project\n<\/h2>\n\n\n\n
    go run main.go\n<\/pre>\n\n\n\n

    Buka pelayar web dan pergi ke http:\/\/localhost:8080

    \nAnda akan menemui halaman ujian ini.<\/p>\n\n

    \"Implementing<\/p>

    \n \n \n Menguji\n<\/h2>\n\n

    Selepas beberapa saat, anda akan dialihkan ke halaman log masuk.<\/p>\n\n

    \"Implementing<\/p>\n\n

    Tekan butang log masuk, dan anda akan log masuk ke halaman utama, yang akan memaparkan nama pengguna log masuk.<\/p>\n\n

    \"Implementing<\/p>\n\n

    Cuba muat semula penyemak imbas, dan anda akan melihat bahawa anda masih log masuk. Kemudian, tekan butang log keluar, token JWT akan dialih keluar dan anda akan diubah hala ke halaman log masuk sekali lagi.<\/p>\n\n

    \"Implementing<\/p>\n\n

    \n \n \n Kesimpulan\n<\/h2>\n\n

    Kesimpulannya, melaksanakan pengesahan JWT dalam API Go menyediakan pendekatan yang selamat dan berskala untuk mengendalikan pengesahan pengguna. Dengan menggunakan rangka kerja Gin bersama pakej golang-jwt\/jwt, kami boleh dengan mudah menyepadukan pengesahan berasaskan token ke dalam aplikasi kami. Token JWT dijana semasa log masuk, mengesahkan kelayakan pengguna dengan selamat, dan memberikan akses kepada laluan yang dilindungi. Perisian tengah memastikan bahawa hanya pengguna yang disahkan boleh mengakses laluan ini dengan mengesahkan kesahihan token. Mekanisme pengesahan tanpa kewarganegaraan ini menawarkan prestasi dan fleksibiliti yang dipertingkatkan, menjadikannya pilihan ideal untuk seni bina API moden.<\/p>\n\n

    Kod sumber: https:\/\/github.com\/stackpuz\/Example-JWT-Go<\/p>\n\n

    Buat Apl Web CRUD dalam Minit: https:\/\/stackpuz.com<\/p>\n\n\n \n\n \n <\/pre><\/pre>"}

    Rumah pembangunan bahagian belakang Golang Melaksanakan Pengesahan JWT dalam Go API

    Melaksanakan Pengesahan JWT dalam Go API

    Dec 27, 2024 pm 08:56 PM

    Implementing JWT Authentication in Go API

    JWT (JSON Web Token) ialah kaedah yang sangat berkesan untuk mendapatkan API melalui pengesahan berasaskan token, memastikan hanya pengguna yang disahkan boleh mengakses titik akhir API anda. Tidak seperti pendekatan berasaskan sesi tradisional, JWT adalah tanpa kewarganegaraan, menghapuskan keperluan untuk storan sesi sebelah pelayan, yang menjadikannya ideal untuk aplikasi berskala dan berprestasi. Dalam panduan ini, kami akan membimbing anda melaksanakan pengesahan JWT dalam API Go, daripada menjana token semasa log masuk pengguna kepada memastikan titik akhir anda dengan mengesahkan token ini, akhirnya meningkatkan keselamatan dan keteguhan data dan sumber aplikasi anda.

    Prasyarat

    • Pergi 1.21

    Projek persediaan

    go mod init app
    go get github.com/gin-gonic/gin@v1.5.0
    go get github.com/golang-jwt/jwt
    go get github.com/joho/godotenv 
    

    Struktur projek

    ├─ .env
    ├─ main.go
    ├─ middleware
    │  └─ authenticate.go
    └─ public
       ├─ index.html
       └─ login.html
    

    Fail projek

    .env

    jwt_secret = b0WciedNJvFCqFRbB2A1QhZoCDnutAOen5g1FEDO0HsLTwGINp04GXh2OXVpTqQL
    

    Fail .env ini mengandungi pembolehubah persekitaran tunggal jwt_secret, yang memegang kunci rahsia yang digunakan untuk menandatangani dan mengesahkan token JWT dalam aplikasi.

    sahkan.go

    package middleware
    
    import (
        "net/http"
        "os"
        "strings"
    
        "github.com/gin-gonic/gin"
        "github.com/golang-jwt/jwt"
    )
    
    type Claims struct {
        Id int `json:"id"`
        Name string `json:"name"`
        jwt.StandardClaims
    }
    
    func Authenticate() gin.HandlerFunc {
        return func(c *gin.Context) {
            if c.Request.URL.Path == "/" || c.Request.URL.Path == "/login" {
                c.Next()
                return
            }
            authHeader := c.GetHeader("Authorization")
            if authHeader == "" {
                c.Status(http.StatusUnauthorized)
                c.Abort()
                return
            }
            tokenString := strings.TrimPrefix(authHeader, "Bearer ")
            token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) {
                return []byte(os.Getenv("jwt_secret")), nil
            })
            if err != nil || !token.Valid {
                c.Status(http.StatusUnauthorized)
                c.Abort()
                return
            }
            if claims, ok := token.Claims.(*Claims); ok {
                c.Set("user", claims)
            } else {
                c.Status(http.StatusUnauthorized)
                c.Abort()
                return
            }
            c.Next()
        }
    }
    

    Perisian tengah authenticate.go mentakrifkan fungsi untuk pengesahan JWT dalam API Go menggunakan rangka kerja Gin. Ia menyemak sama ada permintaan adalah untuk laluan / atau /log masuk, dalam hal ini tiada pengesahan diperlukan. Untuk laluan lain, ia mendapatkan semula pengepala Kebenaran, mengharapkan token Pembawa. Token dihuraikan dan disahkan menggunakan pakej jwt dan kunci rahsia daripada pembolehubah persekitaran. Jika token tidak sah atau tiada, permintaan akan dibatalkan dengan status 401 Tanpa Kebenaran. Jika sah, tuntutan pengguna (seperti id dan nama) diekstrak dan ditambahkan pada konteks Gin, membenarkan akses kepada laluan yang dilindungi.

    main.go

    package main
    
    import (
        "app/middleware"
        "net/http"
        "os"
        "time"
    
        "github.com/gin-gonic/gin"
        "github.com/golang-jwt/jwt"
        "github.com/joho/godotenv"
    )
    
    func main() {
        godotenv.Load()
        router := gin.Default()
        router.Use(middleware.Authenticate())
        router.LoadHTMLFiles("public/index.html", "public/login.html")
    
        router.GET("/", func(c *gin.Context) {
            c.HTML(http.StatusOK, "index.html", nil)
        })
    
        router.GET("/login", func(c *gin.Context) {
            c.HTML(http.StatusOK, "login.html", nil)
        })
    
        router.GET("/user", func(c *gin.Context) {
            user, _ := c.Get("user")
            claims := user.(*middleware.Claims)
            c.JSON(http.StatusOK, gin.H{"name": claims.Name})
        })
    
        router.POST("/login", func(c *gin.Context) {
            var login map[string]string
            c.BindJSON(&login)
            if login["name"] == "admin" && login["password"] == "1234" {
                token := jwt.NewWithClaims(jwt.SigningMethodHS256, &middleware.Claims{
                    Id: 1,
                    Name: login["name"],
                    StandardClaims: jwt.StandardClaims{
                        IssuedAt: time.Now().Unix(),
                        ExpiresAt: time.Now().Add(24 * time.Hour).Unix(),
                    },
                })
                tokenString, _ := token.SignedString([]byte(os.Getenv("jwt_secret")))
                c.JSON(http.StatusOK, gin.H{"token": tokenString})
            } else {
                c.Status(http.StatusBadRequest)
            }
        })
        router.Run()
    }
    

    Fail main.go menyediakan pelayan web Go menggunakan rangka kerja Gin untuk mengendalikan laluan dengan pengesahan berasaskan JWT. Ia menggunakan middleware untuk pengesahan, yang menyemak token JWT yang sah dalam permintaan. Pelayan menyediakan dua halaman HTML: index.html dan login.html, yang boleh diakses melalui laluan / dan /log masuk.

    Untuk laluan /user, pelayan mendapatkan semula nama pengguna yang disahkan daripada tuntutan JWT dan mengembalikannya dalam respons. Untuk laluan POST /log masuk, pelayan mengesahkan kelayakan pengguna (nama dan kata laluan) dan, jika sah, menjana token JWT, menandatanganinya dengan kunci rahsia dan menghantarnya kembali kepada klien. Pelayan dikonfigurasikan untuk mendengar permintaan dan dijalankan pada port lalai.

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" rel="stylesheet">
        <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
    </head>
    <body>
        <div>
    
    
    
    <p>The index.html is a simple web page that provides a user interface for displaying the login status of a user. It uses Bootstrap for styling and Font Awesome for icons. On page load, it checks the user's authentication status by sending a request to the server with a JWT token stored in localStorage. If the user is logged in, it shows a success message with the user's name and a logout button. If not logged in, it shows a message indicating the user is not logged in and redirects them to the login page after a few seconds.</p>
    
    <h3>
      
      
      login.html
    </h3>
    
    
    
    <pre class="brush:php;toolbar:false"><!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" rel="stylesheet">
        <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
    </head>
    <body>
        <div>
    
    
    
    <p>The login.html page provides a simple login form where users can input their username and password. It uses Bootstrap for styling and Font Awesome for icons. When the user submits the form, a JavaScript function login() sends a POST request to the /login endpoint with the entered credentials. If the login is successful, the server returns a JWT token, which is stored in localStorage. The page then redirects the user to the home page (/). If the login fails, an error message is displayed.</p>
    
    <h2>
      
      
      Run project
    </h2>
    
    
    
    <pre class="brush:php;toolbar:false">go run main.go
    

    Buka pelayar web dan pergi ke http://localhost:8080

    Anda akan menemui halaman ujian ini.

    Implementing JWT Authentication in Go API

    Menguji

    Selepas beberapa saat, anda akan dialihkan ke halaman log masuk.

    Implementing JWT Authentication in Go API

    Tekan butang log masuk, dan anda akan log masuk ke halaman utama, yang akan memaparkan nama pengguna log masuk.

    Implementing JWT Authentication in Go API

    Cuba muat semula penyemak imbas, dan anda akan melihat bahawa anda masih log masuk. Kemudian, tekan butang log keluar, token JWT akan dialih keluar dan anda akan diubah hala ke halaman log masuk sekali lagi.

    Implementing JWT Authentication in Go API

    Kesimpulan

    Kesimpulannya, melaksanakan pengesahan JWT dalam API Go menyediakan pendekatan yang selamat dan berskala untuk mengendalikan pengesahan pengguna. Dengan menggunakan rangka kerja Gin bersama pakej golang-jwt/jwt, kami boleh dengan mudah menyepadukan pengesahan berasaskan token ke dalam aplikasi kami. Token JWT dijana semasa log masuk, mengesahkan kelayakan pengguna dengan selamat, dan memberikan akses kepada laluan yang dilindungi. Perisian tengah memastikan bahawa hanya pengguna yang disahkan boleh mengakses laluan ini dengan mengesahkan kesahihan token. Mekanisme pengesahan tanpa kewarganegaraan ini menawarkan prestasi dan fleksibiliti yang dipertingkatkan, menjadikannya pilihan ideal untuk seni bina API moden.

    Kod sumber: https://github.com/stackpuz/Example-JWT-Go

    Buat Apl Web CRUD dalam Minit: https://stackpuz.com

    Atas ialah kandungan terperinci Melaksanakan Pengesahan JWT dalam Go API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Memahami Perbezaan Prestasi antara Golang dan Python untuk API Web Memahami Perbezaan Prestasi antara Golang dan Python untuk API Web Jul 03, 2025 am 02:40 AM

    GolangoffersSuperiorperformance, NativeConCurrencyViagoroutine, andefficientResourceusage, makeitidealforhigh-traffic, rendah latencyapis;

    Adakah Golang Frontend atau Backend Adakah Golang Frontend atau Backend Jul 08, 2025 am 01:44 AM

    Golang digunakan terutamanya untuk pembangunan back-end, tetapi ia juga boleh memainkan peranan tidak langsung dalam bidang front-end. Matlamat reka bentuknya memberi tumpuan kepada pengaturcaraan peringkat tinggi, pemprosesan serentak dan sistem, dan sesuai untuk membina aplikasi back-end seperti pelayan API, microservices, sistem yang diedarkan, operasi pangkalan data dan alat CLI. Walaupun Golang bukan bahasa arus perdana untuk front-end web, ia boleh disusun menjadi JavaScript melalui Gopherjs, berjalan di webassembly melalui Tinygo, atau menghasilkan halaman HTML dengan enjin templat untuk mengambil bahagian dalam pembangunan front-end. Walau bagaimanapun, pembangunan front-end moden masih perlu bergantung kepada JavaScript/Typescript dan ekosistemnya. Oleh itu, Golang lebih sesuai untuk pemilihan Stack Teknologi dengan backend berprestasi tinggi sebagai teras.

    Cara Membina API GraphQL di Golang Cara Membina API GraphQL di Golang Jul 08, 2025 am 01:03 AM

    Untuk membina graphqlapi di GO, adalah disyorkan untuk menggunakan perpustakaan GQLGen untuk meningkatkan kecekapan pembangunan. 1. Mula -mula pilih perpustakaan yang sesuai, seperti GQLGen, yang menyokong penjanaan kod automatik berdasarkan skema; 2. Kemudian tentukan Graphqlschema, terangkan struktur API dan portal pertanyaan, seperti menentukan jenis pos dan kaedah pertanyaan; 3 kemudian memulakan projek dan menjana kod asas untuk melaksanakan logik perniagaan dalam resolver; 4. Akhirnya, sambungkan GraphqlHandler ke Httpserver dan uji API melalui taman permainan terbina dalam. Nota termasuk spesifikasi penamaan medan, pengendalian ralat, pengoptimuman prestasi dan tetapan keselamatan untuk memastikan penyelenggaraan projek

    Cara Memasang Pergi Cara Memasang Pergi Jul 09, 2025 am 02:37 AM

    Kunci untuk memasang Go ialah memilih versi yang betul, mengkonfigurasi pembolehubah persekitaran, dan mengesahkan pemasangan. 1. Pergi ke laman web rasmi untuk memuat turun pakej pemasangan sistem yang sepadan. Windows menggunakan fail .msi, macOS menggunakan fail .pkg, menggunakan fail linux .tar.gz dan unzip mereka ke direktori /usr /tempatan; 2. Konfigurasi pembolehubah persekitaran, edit ~/.bashrc atau ~/. 3. Gunakan arahan kerajaan untuk mengesahkan pemasangan, dan jalankan program ujian hello.go untuk mengesahkan bahawa penyusunan dan pelaksanaan adalah normal. Tetapan jalan dan gelung sepanjang proses

    Penanda Aras Penggunaan Sumber (CPU/Memory) untuk Perkhidmatan Web Golang vs Python biasa Penanda Aras Penggunaan Sumber (CPU/Memory) untuk Perkhidmatan Web Golang vs Python biasa Jul 03, 2025 am 02:38 AM

    Golang biasanya menggunakan kurang CPU dan memori daripada Python ketika membina perkhidmatan web. 1. Model Goroutine Golang adalah cekap dalam penjadualan, mempunyai keupayaan pemprosesan permintaan serentak yang kuat, dan mempunyai penggunaan CPU yang lebih rendah; 2. Go disusun menjadi kod asli, tidak bergantung pada mesin maya semasa runtime, dan mempunyai penggunaan memori yang lebih kecil; 3. 4. Walaupun Python mempunyai kecekapan pembangunan yang tinggi dan ekosistem yang kaya, ia menggunakan sumber yang tinggi, yang sesuai untuk senario dengan keperluan konkurensi yang rendah.

    Contoh Sync.WaitGroup Contoh Sync.WaitGroup Jul 09, 2025 am 01:48 AM

    Sync.WaitGroup digunakan untuk menunggu sekumpulan goroutin untuk menyelesaikan tugas. Intinya adalah untuk bekerjasama melalui tiga kaedah: tambah, selesai, dan tunggu. 1.add (n) Tetapkan bilangan goroutine untuk menunggu; 2.Done () dipanggil pada akhir setiap goroutine, dan kiraan dikurangkan oleh satu; 3.Wait () menghalang coroutine utama sehingga semua tugas selesai. Apabila menggunakannya, sila ambil perhatian: Tambah hendaklah dipanggil di luar goroutine, elakkan tunggu pendua, dan pastikan untuk memastikan bahawa Don dipanggil. Adalah disyorkan untuk menggunakannya dengan menangguhkan. Ia adalah perkara biasa dalam merangkak bersama laman web, pemprosesan data batch dan senario lain, dan dapat mengawal proses konkurensi dengan berkesan.

    Pergi Tutorial Pakej Embed Pergi Tutorial Pakej Embed Jul 09, 2025 am 02:46 AM

    Menggunakan pakej embed Go dengan mudah boleh membenamkan sumber statik ke dalam binari, sesuai untuk perkhidmatan web untuk membungkus HTML, CSS, gambar dan fail lain. 1. Mengisytiharkan sumber tertanam untuk menambah // Go: enmbed Comment sebelum pemboleh ubah, seperti membenamkan satu fail hello.txt; 2. Ia boleh tertanam dalam keseluruhan direktori seperti statik/*, dan menyedari pembungkusan pelbagai fail melalui embed.fs; 3. Adalah disyorkan untuk menukar mod pemuatan cakera melalui pembolehubah bangunan atau persekitaran untuk meningkatkan kecekapan; 4. Perhatikan ketepatan laluan, batasan saiz fail dan ciri-ciri bacaan sumber terbenam. Penggunaan rasional embed dapat memudahkan penggunaan dan mengoptimumkan struktur projek.

    Menilai kebolehbacaan kod dan kebolehkerjaan: Perspektif Golang vs Python Menilai kebolehbacaan kod dan kebolehkerjaan: Perspektif Golang vs Python Jul 03, 2025 am 02:40 AM

    Ketikachoosingbetweengolangandpythonforcodereadabilityandmaintainability, theDecisionhingesonteampiorities.1.golangoffersstrictconsistencywithminimal, doningsyntaxandbuilt-intoolingliKeFmt, entiantrordcoalsyrorder

    See all articles