//获取表单提交的数据进行登录
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条)