Study
Gin

JWT Authentication Dasar

Penjelasan

Berbeda dari Echo (echojwt) dan Fiber (jwtware) yang punya package resmi khusus, Gin TIDAK punya middleware JWT resmi bawaan — pola umumnya menulis middleware custom sendiri memakai package golang-jwt/jwt langsung, memvalidasi token dari header Authorization secara manual.

Contoh Konsep

// go get github.com/golang-jwt/jwt/v5
func JWTMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		tokenString := c.GetHeader("Authorization")

		token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {
			return []byte("kunci-rahasia"), nil
		})

		if err != nil || !token.Valid {
			c.JSON(401, gin.H{"error": "Token tidak valid"})
			c.Abort()
			return
		}

		c.Next()
	}
}

dashboardGroup := r.Group("/dashboard", JWTMiddleware())

Praktikum

Buat JWTMiddleware() yang membaca header Authorization, memvalidasinya dengan jwt.Parse() memakai kunci "rahasia-admin", merespons 401 + c.Abort() kalau tidak valid. Pasangkan ke r.Group("/admin").

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Menulis middleware JWT sendiri (seperti di Gin) memberi FLEKSIBILITAS lebih dibanding memakai package resmi (echojwt/jwtware) — tapi juga tanggung jawab lebih besar untuk menangani semua edge case keamanan dengan benar (token expired, algoritma signing yang salah, dst) secara manual.