golang jwt 签署令牌Authentication token

1.要安装 jwt 包,首先需要 安装Go,然后可以使用下面的命令将其添加jwt-go为 Go 程序中的依赖项。 go get -u github.com/golang-jwt/jwt/v5 2.将其导入到您的代码中: import "github.com/golang-jwt/jwt/v5" 3.demo func Test(t *testing.T) { //商户 subject := "01H" // 密钥 secretBase64 := "AwFj+OTCI=" secret, err := base64.StdEncoding.DecodeString(secretBase64) if err != nil { log.Fatalf("Error decoding base64 secret: %v", err) } // 过期秒数 expirseIn := 60 * time.Second // 创建jwt token token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "sub": subject, "exp": time.Now().Add(expirseIn).Unix(), }) // 使用密钥签名 tokenString, err := token.SignedString(secret) if err != nil { log.Fatalf("Error signing token: %v", err) } fmt.Println("tokenString=", tokenString) m := make(mapinterface m = "www" m = "qqq" // 将数据转为JSON格式 jsonData, err := json.Marshal(m) if err != nil { log.Fatalf("Error marshalling JSON: %v", err) } client := &http.Client{} url := "https://demo.com" method := "POST" req, err := http.NewRequest(method, url, bytes.NewBuffer(jsonData)) if err != nil { log.Fatalf("Error creating request: %v", err) } req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", tokenString)) req.Header.Set("Content-Type", "application/json; charset=utf-8") resp, err := client.Do(req) if err != nil { log.Fatalf("Error sending request: %v", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatalf("Error reading response body: %v", err) } log.Printf("Response body: %s", string(body)) } log.Printf("Response StatusCode: %d,%d", resp.StatusCode,http.StatusOK) info := TestRespone{} err = ffjson.Unmarshal(body, &info) if err != nil { log.Printf("body

golang 使用 gomail 发送邮件

安装gomail go get gopkg.in/gomail.v2 package main import ( "crypto/tls" "fmt" "gopkg.in/gomail.v2" ) func main() { test1() } func test1() { message := ` <p> Hello %s,</p> <p style="text-indent:2em">测试测试测试测试.</p> <p style="text-indent:2em">测试11111</p> ` // QQ 邮箱: // SMTP 服务器地址:smtp.qq.com(SSL协议端口:465/994 | 非SSL协议端口:25) // 163 邮箱: // SMTP 服务器地址:smtp.163.com(端口:25) host := "xxxxx" port := 25 userName := "xxxx" // 有些油箱登入名不是邮箱地址 password := "xxxx" fromemail := "xx@xx.com" m := gomail.NewMessage() m.SetHeader("From", fromemail) // 发件人 // m.SetHeader("From", "alias"+"<"+userName+">") // 增加发件人别名 // 多个收件人形式 // mailTo := string{ // "******@qq.com", // "******@qq.com", // } // m.SetHeader("To", mailTo...) m.SetHeader("To", "xxxxx@qq.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接 // 多个同上 // m.SetHeader("Cc", "******@qq.com") // 抄送,可以多个 // m.SetHeader("Bcc", "******@qq.com") // 暗送,可以多个 m.SetHeader("Subject", "发送测试11111") // 邮件主题 // text/html 的意思是将文件的 content-type 设置为 text/html 的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。 // 可以通过 text/html 处理文本格式进行特殊处理,如换行、缩进、加粗等等 m.SetBody("text/html", fmt.Sprintf(message, "测试")) // text/plain的意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理 // m.SetBody("text/plain", "纯文本") // m.Attach("test.sh") // 附件文件,可以是文件,照片,视频等等 // m.Attach("lolcatVideo.mp4") // 视频 // m.Attach("lolcat.jpg") // 照片 d := gomail.NewDialer( host, port, userName, password, ) // 关闭SSL协议认证 d.TLSConfig = &tls.Config{InsecureSkipVerify: true} if err := d.DialAndSend(m); err != nil { panic(err) } } package main import ( "gopkg.in/gomail.v2" "strconv" ) func SendMail(mailTo string,subject string, body string ) error { //定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码 mailConn := mapstring { "user": "zhangqiang@xxxx.com", "pass": "xxxx", "host": "smtp.mxhichina.com", "port": "465", } port, _