This commit is contained in:
C菌
2023-03-29 02:40:21 +08:00
parent 2ba63e226d
commit 8985c03ac9
5 changed files with 177 additions and 44 deletions

View File

@@ -3,6 +3,7 @@ package main
import (
"crypto/rand"
"encoding/base64"
"fmt"
"log"
"net/http"
"os"
@@ -120,12 +121,12 @@ func githubCallbackHandler(c *gin.Context) {
}
func initDB() {
dsn := "chat:123456@tcp(42.192.36.14:3306)/chat?charset=utf8mb4&parseTime=True&loc=Local"
dsn := os.Getenv("MYSQL_DSN")
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("Error opening database:", err)
}
// db.AutoMigrate()
sqlDB, err := db.DB()
if err != nil {
log.Fatal("Error connecting to database:", err)
@@ -198,7 +199,7 @@ func generateJWTToken(userID int64) (string, error) {
token := jwt.New(jwt.SigningMethodHS256)
claims := token.Claims.(jwt.MapClaims)
claims["userID"] = userID
claims["user"] = userID
claims["exp"] = time.Now().Add(time.Hour * 24).Unix()
jwtToken, err := token.SignedString(jwtSecret)
@@ -209,10 +210,27 @@ func generateJWTToken(userID int64) (string, error) {
return jwtToken, nil
}
type GithubUser struct {
ID int `json:"id"`
Login string `json:"login"`
Name string `json:"name"`
AvatarURL string `json:"avatar_url"`
Email string `json:"email"`
func verifyJWTToken(tokenString string) {
// 验证 token
tokenValue, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
// 该函数用于验证令牌的签名方法是否正确
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
}
return jwtSecret, nil
})
if err != nil {
fmt.Println("Error parsing token string:", err)
return
}
// 获取声明信息
if claims, ok := tokenValue.Claims.(jwt.MapClaims); ok && tokenValue.Valid {
// fmt.Println("Authorized:", claims["authorized"])
fmt.Println("User:", claims["user"])
fmt.Println("Expiration time:", time.Unix(int64(claims["exp"].(float64)), 0))
} else {
fmt.Println("Invalid token.")
}
}