浏览代码

token generator

0x4a52466c696e74 5 月之前
父节点
当前提交
51fac6be3b
共有 1 个文件被更改,包括 33 次插入0 次删除
  1. 33 0
      token_generator.go

+ 33 - 0
token_generator.go

@@ -0,0 +1,33 @@
+package rest
+
+import (
+	"time"
+
+	"git.ali33.ru/fcg-xvii/go-tools/json"
+	"github.com/dgrijalva/jwt-go"
+)
+
+func NewTokenGenerator(secret string) *TokenGenerator {
+	return &TokenGenerator{
+		secret: secret,
+	}
+}
+
+type TokenGenerator struct {
+	secret string
+}
+
+func (s *TokenGenerator) Generate(m json.Map, expire int64) (string, error) {
+	token := jwt.New(jwt.SigningMethodHS256)
+
+	claims := token.Claims.(jwt.MapClaims)
+	for key, val := range m {
+		claims[key] = val
+	}
+	if expire > 0 {
+		claims["exp"] = time.Now().Add(time.Minute * 30).Unix()
+	}
+
+	tokenString, err := token.SignedString(s.secret)
+	return tokenString, err
+}