123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package tokenize
- import (
- "encoding/hex"
- "encoding/json"
- "git.nspix.com/golang/micro/helper/crypto"
- "git.nspix.com/golang/micro/helper/utils"
- "time"
- )
- var (
- defaultName = "@@micro@@"
- )
- type (
- entry struct {
- Uid string `json:"u"`
- ExpiredAt time.Time `json:"e"`
- }
- )
- //Encode encode token info
- func Encode(name string, uid string, expiredAt time.Time) (token string, err error) {
- var (
- buf []byte
- )
- if buf, err = json.Marshal(entry{Uid: uid, ExpiredAt: expiredAt}); err != nil {
- return
- }
- if buf, err = crypto.AesEncrypt(buf, utils.MD5([]byte(defaultName+name))); err != nil {
- return
- }
- token = hex.EncodeToString(buf)
- return
- }
- //Decode decode token
- func Decode(name string, token string) (uid string, expiredAt time.Time, err error) {
- var (
- buf []byte
- e entry
- )
- if buf, err = hex.DecodeString(token); err != nil {
- return
- }
- if buf, err = crypto.AesDecrypt(buf, utils.MD5([]byte(defaultName+name))); err != nil {
- return
- }
- if err = json.Unmarshal(buf, &e); err == nil {
- uid = e.Uid
- expiredAt = e.ExpiredAt
- }
- return
- }
|