func (ut *UserToken) GenToken(crypto *tkits.Crypto) (string, error) { bs := make([]byte, TokenLen) 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) buf.Write([]byte(ip)) // current time binary.Write(buf, binary.BigEndian, time.Now().Unix()) // current time binary.Write(buf, binary.BigEndian, ut.Expire) // encrypt if t, err := crypto.Encrypt(buf.Bytes()); err != nil { return "", err } else { return base64.URLEncoding.EncodeToString(t), nil } }