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

go语言用cookie实现登录(gin+gorm),第1张

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/996379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存