<menu id="w4qwy"></menu>
<tbody id="w4qwy"></tbody>
<option id="w4qwy"><source id="w4qwy"></source></option>
  • <option id="w4qwy"><code id="w4qwy"></code></option>
    \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日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    \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

    ? ????? ?? http:\/\/localhost:8080

    ?? ?????.\n? ??? ???? ?? ? ????.<\/p>\n\n

    \"Implementing<\/p>

    \n \n \n ???\n<\/h2>\n\n

    ? ? ?? ??? ???? ???????.<\/p>\n\n

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

    ??? ??? ??? ????? ?????, ???? ???? ??? ?????.<\/p>\n\n

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

    ????? ?? ??? ??? ????? ?? ?? ??? ? ????. ?? ?? ???? ??? ??? JWT ??? ???? ?? ??? ???? ???????.<\/p>\n\n

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

    \n \n \n ??\n<\/h2>\n\n

    ????? Go API?? JWT ??? ???? ??? ??? ???? ???? ?? ??? ?? ??? ?????. golang-jwt\/jwt ???? ?? Gin ?????? ???? ?? ?? ??? ??????? ?? ??? ? ????. JWT ??? ??? ?? ???? ??? ?? ??? ???? ???? ??? ??? ?? ??? ??? ?????. ????? ??? ???? ???? ??? ???? ??? ??? ???? ? ??? ?????. ? ??? ?? ????? ??? ??? ???? ????? ?? API ????? ???? ?????.<\/p>\n\n

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

    ? ? ?? CRUD ? ? ???: https:\/\/stackpuz.com<\/p>\n\n\n \n\n \n <\/pre><\/pre>"}

    ? ??? ?? Golang Go API?? JWT ?? ??

    Go API?? JWT ?? ??

    Dec 27, 2024 pm 08:56 PM

    Implementing JWT Authentication in Go API

    JWT(JSON ? ??)? ?? ?? ??? ?? API? ???? ?? ???? ????, ??? ???? API ?????? ???? ? ??? ???. ?? ?? ?? ?? ??? ?? JWT? ?? ?????? ?? ? ?? ???? ???? ???? ?? ???? ??? ??? ??????? ??????. ? ?????? ??? ??? ? ??? ???? ??? ??? ??? ???? ?????? ???? ????? ?????? ??? ? ???? ??? ???? ???? ??? Go API?? JWT ??? ???? ??? ?????.

    ?? ??

    • 1.21? ??

    ???? ??

    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 
    

    ???? ??

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

    ???? ??

    .env

    jwt_secret = b0WciedNJvFCqFRbB2A1QhZoCDnutAOen5g1FEDO0HsLTwGINp04GXh2OXVpTqQL
    

    ? .env ???? ???????? JWT ??? ???? ???? ? ???? ?? ?? ???? ?? ?? ?? jwt_secret? ???? ????.

    authenticate.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()
        }
    }
    

    authenticate.go ????? Gin ?????? ???? Go API?? JWT ??? ?? ??? ?????. ??? / ?? /login ??? ?? ??? ?????. ? ?? ??? ???? ????. ?? ??? ?? Bearer ??? ???? Authorization ??? ?????. ??? jwt ???? ?? ??? ?? ?? ???? ?? ???? ?????. ??? ???? ??? ??? ?? ??? 401 Unauthorized ??? ?????. ??? ?? ??? ???(?: ID ? ??)? ???? Gin ????? ???? ??? ??? ?? ???? ?????.

    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()
    }
    

    main.go ??? JWT ?? ???? ??? ???? ?? Gin ?????? ???? Go ? ??? ?????. ???? ??? JWT ??? ???? ??? ????? ?????. ??? / ? /login ??? ?? ???? ? ?? index.html ? login.html??? ? ?? HTML ???? ?????.

    /user ??? ?? ??? JWT ????? ??? ??? ??? ???? ???? ?????. /login POST ??? ?? ??? ??? ?? ??(?? ? ????)? ???? ???? ??? ?? JWT ??? ???? ?? ?? ??? ? ?????? ?? ????. ??? ??? ???? ?? ???? ????? ?????.

    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
    

    ? ????? ?? http://localhost:8080

    ?? ?????. ? ??? ???? ?? ? ????.

    Implementing JWT Authentication in Go API

    ???

    ? ? ?? ??? ???? ???????.

    Implementing JWT Authentication in Go API

    ??? ??? ??? ????? ?????, ???? ???? ??? ?????.

    Implementing JWT Authentication in Go API

    ????? ?? ??? ??? ????? ?? ?? ??? ? ????. ?? ?? ???? ??? ??? JWT ??? ???? ?? ??? ???? ???????.

    Implementing JWT Authentication in Go API

    ??

    ????? Go API?? JWT ??? ???? ??? ??? ???? ???? ?? ??? ?? ??? ?????. golang-jwt/jwt ???? ?? Gin ?????? ???? ?? ?? ??? ??????? ?? ??? ? ????. JWT ??? ??? ?? ???? ??? ?? ??? ???? ???? ??? ??? ?? ??? ??? ?????. ????? ??? ???? ???? ??? ???? ??? ??? ???? ? ??? ?????. ? ??? ?? ????? ??? ??? ???? ????? ?? API ????? ???? ?????.

    ?? ??: https://github.com/stackpuz/Example-JWT-Go

    ? ? ?? CRUD ? ? ???: https://stackpuz.com

    ? ??? Go API?? JWT ?? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

    ? ????? ??
    ? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

    ? AI ??

    Undresser.AI Undress

    Undresser.AI Undress

    ???? ?? ??? ??? ?? AI ?? ?

    AI Clothes Remover

    AI Clothes Remover

    ???? ?? ???? ??? AI ?????.

    Video Face Swap

    Video Face Swap

    ??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

    ???

    ??? ??

    ???++7.3.1

    ???++7.3.1

    ???? ?? ?? ?? ???

    SublimeText3 ??? ??

    SublimeText3 ??? ??

    ??? ??, ???? ?? ????.

    ???? 13.0.1 ???

    ???? 13.0.1 ???

    ??? PHP ?? ?? ??

    ???? CS6

    ???? CS6

    ??? ? ?? ??

    SublimeText3 Mac ??

    SublimeText3 Mac ??

    ? ??? ?? ?? ?????(SublimeText3)

    ???

    ??? ??

    ?? ????
    1786
    16
    Cakephp ????
    1729
    56
    ??? ????
    1581
    29
    PHP ????
    1446
    31
    ???
    ????? GO? ?? ??? ??? ?????? ????? GO? ?? ??? ??? ?????? Jun 19, 2025 am 01:08 AM

    GO? ????? ????? ??? ????? ??????. ?? ??? ?? ?????. 1. ? ??? ?? : Linux ????? ?? ??? ?????? ??? ??? ? ????. 2. ?? ??? ??? ?? ???? ???? ?? ??? ????? ?? ??? ?? ?? ??? ?? ??? ? ? ????. 3. ?? ?? ???? ?? : ?? ????? ??? ??? ?? ??? ??? ???? ??????. 4. ??? ?? ??? : ??? ???? ????? ?? ?????? ? ???? ? ? ??? ??? ? ??? ?????. ??? ??? CLI ??, ???? ??? ? ?? ????? ????? ????? ????? ?? ??? ??? ???? ????? ???? ??? ?????.

    GO? C? ?? ?? ??? ???? ??? ??? ??? ?????? GO? C? ?? ?? ??? ???? ??? ??? ??? ?????? Jun 19, 2025 am 01:11 AM

    goensuresmemorysafety? ?? MemolemanucameThrougatomaticgargarbagecollection, nopointerarithmetic, safeconcurrency, andruntimechecks.first, go'sgarbagecollectoricallyally reclaimsunusedmemory, ??, itdisallowspointe, itdisallowspointe ??

    Go?? ??? ? ??? ??? ?????? (? : Make (Chan Int, 10)) Go?? ??? ? ??? ??? ?????? (? : Make (Chan Int, 10)) Jun 20, 2025 am 01:07 AM

    GO?? ?? ??? ???? MAKE ??? ?? ?? ?? ? ??????. ?? ??? ???? ??? ??? ???? ?? ? ???? ?? ? ?? ??? ???? ?? ? ???? ??? ??? ? ????. ?? ??, ch : = make (Chanint, 10)? ?? 10 ?? ?? ?? ??? ??? ?? ??? ????. ???? ?? ??? ??, ??? ???? ?? ???? ??? ???? ???? ?? ? ??? ??? ????? ?????. ??? ??? ?, ?? : 1. ?? ??? ??? ??? ?? ??? ??? ??? ?? ?????????. 2. ??? ??? ??? ??? ??? ???? ?? ???????. 3. ??? chanstruct {} ??? ?? ?? ? ? ????. ???? ?????? ??? ?, ??? ??? ?? ? ???? ?????.

    ??? ????? ??? GO? ??? ??? ? ????? ??? ????? ??? GO? ??? ??? ? ????? Jun 19, 2025 am 01:10 AM

    GO? ??? ?????? ??????. C? ?? ??? ? ??? ??? ?? ??? ?? ??? ? ??? ???? ?? ?????. 1. ?? ? ???? ?? ???? Go? OS ???? ?? ? ????? ????? ??? ??, ??, ?? ??? ? ???? ?? ?????. OS.ReadFile? ???? ? ?? ??? ?? ??? ?????. ?? ???? ?? ?? ?? ??? ???? ? ?????. 2. ???? ?? ???? OS/EXEC ???? exec.command ??? ?? ??? ????, ??? ????, ?? ??? ????, ?? ? ?? ??? ?????? ?? ??, ??? ?? ? ?? ????? ??? ???? ????? ?? ? ? ????. 3. ???? ? ??? ???? Net ???? TCP/UDP ?????, DNS ?? ? ?? ??? ?????.

    Go? ??? ?????? ???? ????? ????????? Go? ??? ?????? ???? ????? ????????? Jun 24, 2025 pm 03:17 PM

    GO ???? ?? ??? ????? ?? ???? ????? ?? ? ???? ???? ??? ??? ???? ????????. ?? ???? ??? ?, ???? ? ??? ?? ??? ???? ?? ?? ? ? ????. 1. func (rrectangle) area () int? ?? ? ???? ???? rect.area ()? ?? ?? ??????. 2. ??? ?? ???? ?? func (r*???) setwidth (...)? ?? ??? ???? ???? ???? ?? ??? ???? ?????. 3. ??? ?? ? ?, ?? ??? ??? ?? ? ???, ?? ??? ?? ?? ?? ? ???. 4. Go? Getter/Setter? ??? ???? ??????.

    ???? ?????? ???? ??? ?????? ???? ?????? ???? ??? ?????? Jun 22, 2025 pm 03:41 PM

    GO?? ?????? ??? ???? ?? ??? ???? ?????. ?????? ??? ???? ???? ??? ??? ???? ?? ??? ?????? ???? ??????. ?? ??, speak () ???? ?? ? ??? ?????? ???? ???? ???? ?? ??? ???? ?? ? ? ????. ?????? ???? ??, ?? ?? ?? ?? ? ????? ?? ????? ???? ? ?????. ?????? ???? ????? ???? ???? ??? ??? ???? ??? ?? ??? ???? ?? ?????? ?????. ???? ?? ???? ??, ??, ?? ?????? ?? ???? ??? ? ?? ???? ?????. ?? ??, ?? ?? ??? ?? ??? ??? ???? ??? Anno? ??? ? ????.

    Go? ??? ????? ??? ??? ??? ?????? (? :, len (), strings.contains (), strings.index (), strings.replaceall ()) Go? ??? ????? ??? ??? ??? ?????? (? :, len (), strings.contains (), strings.index (), strings.replaceall ()) Jun 20, 2025 am 01:06 AM

    Go Language?? ??? ??? ?? ??? ??? ? ?? ??? ?? ?????. 1.Strings.contains ()? ???? ?? ???? ???? ??? ??? ???? ?? ?? ???? ? ?????. 2.strings.index ()? ???? ?? ???? ???? ??? ?? ? ??? ???? ??? -1? ?????. 3.strings.replaceall ()? ?? ???? ?? ??? ?? ? ? ??? Strings.replace ()? ?? ?? ?? ?? ? ? ????. 4.Len () ??? ???? ??? ??? ?? ? ????? ?? ??? ?? ? ?? ??? ???? ?????? ???????. ??? ??? ?? ??? ???, ??? ?? ?? ? ??? ??? ?? ?????? ?????.

    IO ???? ???? GO?? ?? ? ?? ???? ?? ???? ??? ?????? IO ???? ???? GO?? ?? ? ?? ???? ?? ???? ??? ?????? Jun 20, 2025 am 11:25 AM

    TheGoiopackageprovidesinterfaceslikeReaderandWritertohandleI/Ooperationsuniformlyacrosssources.1.io.Reader'sReadmethodenablesreadingfromvarioussourcessuchasfilesorHTTPresponses.2.io.Writer'sWritemethodfacilitateswritingtodestinationslikestandardoutpu

    See all articles