jinzh notes
jinzh notes

golang生成session id

golang生成session id
内容纲要

简单记录一下生成sessionid的方法

原理

通过调用go提供的函数生成随机字符串,而不是我们自己生成,使用的rand包中的read函数,随机读取写入字节,然后将其进行url编码返回即可

代码

package main

import (
    "crypto/rand"
    "encoding/base64"
    "fmt"
)

func main() {
    fmt.Println("Hello, session id")

    // Example: this will give us a 44 byte, base64 encoded output
    token, err := GenerateRandomString(32)
    if err != nil {
        // Serve an appropriately vague error to the
        // user, but log the details internally.
        fmt.Println(err)
    }
    fmt.Println(token)
}

// GenerateRandomBytes returns securely generated random bytes.
// It will return an error if the system's secure random
// number generator fails to function correctly, in which
// case the caller should not continue.
func GenerateRandomBytes(n int) ([]byte, error) {
    b := make([]byte, n)
    _, err := rand.Read(b)
    // Note that err == nil only if we read len(b) bytes.
    if err != nil {
        return nil, err
    }

    return b, nil
}

// GenerateRandomString returns a URL-safe, base64 encoded
// securely generated random string.
// It will return an error if the system's secure random
// number generator fails to function correctly, in which
// case the caller should not continue.
func GenerateRandomString(s int) (string, error) {
    b, err := GenerateRandomBytes(s)
    return base64.URLEncoding.EncodeToString(b), err
}

输出

Hello, session id
gsvTxJfMIYfFQ1qJvdXf83orFsWIGypglZHR1qFXHjk=

影翼

文章作者

发表评论

textsms
account_circle
email

jinzh notes

golang生成session id
简单记录一下生成sessionid的方法 原理 通过调用go提供的函数生成随机字符串,而不是我们自己生成,使用的rand包中的read函数,随机读取写入字节,然后将其进行url编码返回即可 代码 pack…
扫描二维码继续阅读
2022-04-02