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?
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!
Komentar yang paling membantu
Jadi saya menemukan bagaimana saya bisa melakukannya
Fungsi
Set()
membantu sayaSaya dapat menggunakannya dalam diri saya
checkCurrentUser()
dan sekarang saya bisa mendapatkan contoh ini dengan
Terima kasih, masalah mungkin sudah ditutup!