var Secret = []byte("whatasecret") //客户端通过调用UServer新增的节点信息接口,获取到的服务启动时间作为秘钥
// jwt过期时间, 按照实际环境设置
const expiration = 2 * time.Minute
type Claims struct {
// 自定义字段, 可以存在用户名, 用户ID, 用户角色等等
SN string
// jwt.StandardClaims包含了官方定义的字段
jwt.StandardClaims
}
func GetToken(SN string) (string, error) {
// 创建声明
a := &Claims{
SN: SN(open-detail接口返回的sn值),
StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(expiration).Unix(), // 过期时间
IssuedAt: time.Now().Unix(), // 签发时间
Issuer: "gin-jwt-demo", // 签发者
Id: "", // 按需求选这个, 有些实现中, 会控制这个ID是不是在黑/白名单来判断是否还有效
NotBefore: 0, // 生效起始时间
Subject: "", // 主题
},
}
// 用指定的哈希方法创建签名对象
tt := jwt.NewWithClaims(jwt.SigningMethodHS256, a)
return tt.SignedString(Secret)
}