50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
jwt_lib "github.com/dgrijalva/jwt-go"
|
|
"github.com/gin-gonic/contrib/jwt"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
var (
|
|
mysupersecretpassword = "unicornsAreAwesome"
|
|
)
|
|
|
|
func main() {
|
|
r := gin.Default()
|
|
|
|
public := r.Group("/api")
|
|
|
|
public.GET("/", func(c *gin.Context) {
|
|
// Create the token
|
|
token := jwt_lib.New(jwt_lib.GetSigningMethod("HS256"))
|
|
// Set some claims
|
|
token.Claims = jwt_lib.MapClaims{
|
|
"Id": "Christopher",
|
|
"exp": time.Now().Add(time.Hour * 1).Unix(),
|
|
}
|
|
// Sign and get the complete encoded token as a string
|
|
tokenString, err := token.SignedString([]byte(mysupersecretpassword))
|
|
if err != nil {
|
|
c.JSON(500, gin.H{"message": "Could not generate token"})
|
|
}
|
|
c.JSON(200, gin.H{"token": tokenString})
|
|
})
|
|
|
|
private := r.Group("/api/private")
|
|
private.Use(jwt.Auth(mysupersecretpassword))
|
|
|
|
/*
|
|
Set this header in your request to get here.
|
|
Authorization: Bearer `token`
|
|
*/
|
|
|
|
private.GET("/", func(c *gin.Context) {
|
|
c.JSON(200, gin.H{"message": "Hello from private"})
|
|
})
|
|
|
|
r.Run("localhost:8080")
|
|
}
|