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").
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.