go语言实现简单登陆返回token样例

目录

1、代码实现样例:

2、postman调用,获取登陆后的token:


1、代码实现样例:

package main

import (
	"net/http"
	"time"

	"github.com/dgrijalva/jwt-go"
	"github.com/gin-gonic/gin"
)

var (
	// 密钥,用于签署 JWT 令牌
	signingKey = []byte("secret")
)

// 用户信息
type User struct {
	Username string `json:"username"`
	Password string `json:"-"`
}

// 模拟用户数据
var users = map[string]User{
	"user1": {"user1", "password1"},
	"user2": {"user2", "password2"},
}

// 登录处理程序
func LoginHandler(c *gin.Context) {
	var credentials struct {
		Username string `json:"username"`
		Password string `json:"password"`
	}
	if err := c.BindJSON(&credentials); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid request"})
		return
	}

	// 检查用户名和密码
	user, ok := users[credentials.Username]
	if !ok || user.Password != credentials.Password {
		c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid username or password"})
		return
	}

	// 创建 JWT 令牌
	token := jwt.New(jwt.SigningMethodHS256)
	claims := token.Claims.(jwt.MapClaims)
	claims["username"] = user.Username
	claims["exp"] = time.Now().Add(time.Hour * 24).Unix() // 令牌过期时间为24小时

	// 签名令牌
	tokenString, err := token.SignedString(signingKey)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to generate token"})
		return
	}

	// 返回令牌给客户端
	c.JSON(http.StatusOK, gin.H{"token": tokenString})
}


func main() {
	r := gin.Default()

	// 登录路由
	r.POST("/login", auth2.LoginHandler)

	// 启动服务
	r.Run(":8080")
}

2、postman调用,获取登陆后的token:

相关推荐

  1. go语言http协议post方法调用

    2024-04-30 18:58:04       38 阅读
  2. GO语言容器大全(附代码)

    2024-04-30 18:58:04       7 阅读
  3. go-factory工厂模式

    2024-04-30 18:58:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-30 18:58:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-30 18:58:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-30 18:58:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-30 18:58:04       18 阅读

热门阅读

  1. mpv启动脚本功能

    2024-04-30 18:58:04       10 阅读
  2. 手写代码题【基础篇】

    2024-04-30 18:58:04       11 阅读
  3. leetcode942-Find the Shortest Superstring

    2024-04-30 18:58:04       8 阅读
  4. LeetCode 727. 菱形

    2024-04-30 18:58:04       10 阅读
  5. leetcode392--判断子序列

    2024-04-30 18:58:04       11 阅读
  6. 基于VMD-CNN-BiLSTM-Attention组合模型时间序列预测

    2024-04-30 18:58:04       9 阅读
  7. 自然语言转SQL 学习笔记

    2024-04-30 18:58:04       12 阅读
  8. Edge的使用心得与深度探索

    2024-04-30 18:58:04       12 阅读
  9. 嵌入式开发英文单词汇总(C++、Python、Shell)

    2024-04-30 18:58:04       11 阅读