Gin: Apakah mungkin untuk menyimpan currentUser ke varible

Dibuat pada 8 Nov 2018  ·  3Komentar  ·  Sumber: gin-gonic/gin

Saya memeriksa currentUser dengan cara berikutnya

users := router.Group("/users")
    {
        users.Use(checkCurrentUser())
        users.GET("/show", controllers.ShowUser)
    }

dan itu memeriksanya dengan benar, tetapi sangat sering currentUser diperlukan di dalam handler, misalnya untuk mendapatkan semua asosiasinya (tidak masalah).

// ShowUser shows information about user
func ShowUser(c *gin.Context) {
    user := gerCurrentUser(c) // I do additional request to the DB
    c.HTML(200, "showUser", gin.H{
        "currentUser": user,
    })
}

Dan saya harus melakukan request tambahan ke DB, untuk mendapatkan record ini.

Apakah mungkin untuk menyimpan currentUser suatu tempat dan menggunakannya di dalam handler?

question

Komentar yang paling membantu

Jadi saya menemukan bagaimana saya bisa melakukannya
Fungsi Set() membantu saya
Saya dapat menggunakannya dalam diri saya checkCurrentUser()

func checkCurrentUser() gin.HandlerFunc {
    return func(c *gin.Context) {
        session := sessions.Default(c)
        userID := session.Get("userID")
        user := new(models.User)
        configs.DB.First(&user, userID)
        if configs.DB.NewRecord(user) {
            c.Redirect(http.StatusPermanentRedirect, "/login")
        } else {
            c.Set("currentUser", user)
            c.Next()
        }
    }
}

dan sekarang saya bisa mendapatkan contoh ini dengan

currentUser := c.MustGet("currentUser")

Terima kasih, masalah mungkin sudah ditutup!

Semua 3 komentar

Anda bisa menggunakan redis

Anda dapat menggunakan sesi, jwt, redis..etc ...

Jadi saya menemukan bagaimana saya bisa melakukannya
Fungsi Set() membantu saya
Saya dapat menggunakannya dalam diri saya checkCurrentUser()

func checkCurrentUser() gin.HandlerFunc {
    return func(c *gin.Context) {
        session := sessions.Default(c)
        userID := session.Get("userID")
        user := new(models.User)
        configs.DB.First(&user, userID)
        if configs.DB.NewRecord(user) {
            c.Redirect(http.StatusPermanentRedirect, "/login")
        } else {
            c.Set("currentUser", user)
            c.Next()
        }
    }
}

dan sekarang saya bisa mendapatkan contoh ini dengan

currentUser := c.MustGet("currentUser")

Terima kasih, masalah mungkin sudah ditutup!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat