func (ut *UserToken) GenToken(crypto *gokits.Crypto) (string, error) { bs := make([]byte, 0) buf := bytes.NewBuffer(bs) // flag buf.WriteByte(byte(ut.Flag)) // uid binary.Write(buf, binary.BigEndian, ut.Uid) // client ip ip := net.ParseIP(ut.ClientIP) //log.Info("token length, ip ", ut.ClientIP) buf.Write([]byte(ip.To4())) // current time binary.Write(buf, binary.BigEndian, time.Now().Unix()) // expire binary.Write(buf, binary.BigEndian, ut.Expire) // encrypt //log.Info("token length, expire ", buf.Len()) if t, err := crypto.Encrypt(buf.Bytes()); err != nil { return "", err } else { return base64.URLEncoding.EncodeToString(t), nil } }