Example #1
0
File: auth.go Project: wcreate/wuc
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
	}
}