go语言用cookie实现登录(gin+gorm)

go语言用cookie实现登录(gin+gorm)

第一步数据库验证表单提交的用户名和密码是否正确
//获取表单提交的数据进行登录
name := c.PostForm("name")
password := c.PostForm("password")
//每个人的验证都基本不同,代码就省略了
//将获得的数据进行数据库验证,如果验证成功,则进行第二步在验证成功的地方设置cookie

//下方代码为我验证成功的地方,设置cookie
if admin.Password == password {
		c.SetCookie("abc", 123, 3600, "/", "localhost", false, true)
		// 返回信息登录成功
		c.String(http.StatusOK, "Login success!")
	}
第二步设置cookie
// 给客户端设置cookie
// maxAge int, 单位为秒 
// path,cookie所在目录
// domain string,域名
// secure 是否智能通过https访问
// httpOnly bool  是否允许别人通过js获取自己的cookie
c.SetCookie("abc", "123", 3600, "/", "localhost", false, true)

参数中第一个和第二个可以自己定义(“abc”, 123)

第三步设置中间件
func AuthMiddleWare() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 获取客户端cookie并校验
		if cookie, err := c.Cookie("abc"); err == nil {
			if cookie == "123" {
				c.Next()
				return
			}
		}
		// 返回错误
		c.JSON(http.StatusUnauthorized, gin.H{"error": "err"})
		// 若验证不通过,不再调用后续的函数处理
		c.Abort()
		return
	}
}

注意:abc 和123 要与setCookie中的值对应

第四步使用中间件
//创建路由
	studentGroup := r.Group("/student")

	{
		//学生登录
		studentGroup.POST("/login", register_login.StudentLogin)
		//调用中间件
		studentGroup.Use(controller.AuthMiddleWare())
		//获取个人信息
		studentGroup.GET("/student1/:stu/:sno", controller.GetStudent)
		//更新自己局部信息
		studentGroup.PUT("/student2/:stu/:sno", controller.UpdateStudent)
		//获取分数
		studentGroup.GET("/student3/:stu", controller.GetScore)
	}

上面是我创建的学生路由组

  • 通过这个实现登录
    studentGroup.POST("/login", register_login.StudentLogin)
  • 使用中间件
    studentGroup.Use(controller.AuthMiddleWare())
  • 登录成功后网页里就保存了cookie
  • 就可以进行下面的操作
    //获取个人信息
    studentGroup.GET("/student1/:stu/:sno", controller.GetStudent)
    //更新自己局部信息
    studentGroup.PUT("/student2/:stu/:sno", controller.UpdateStudent)
    //获取分数
    studentGroup.GET("/student3/:stu", controller.GetScore)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值