1.首先我们需要写一个鉴权函数,函数的格式为func AuthMiddleware() gin.HandlerFunc,即函数的返回值必须为gin.HandlerFunc,名称可以自定义。
func AuthMiddleware() gin.HandlerFunc {
//你可以写一些自己鉴权函数的处理逻辑,我在这里简单的举一个获取cookie失败的例子
return func(c *gin.Context) {
loginTime, err := c.Cookie("username")
if err != nil {
c.JSON(400, gin.H{
"message": "用户未登录",
"error": err.Error(),
})
c.Abort() //c.Abort()的作用是直接终止请求的处理,请求处理权不会在传递给接下来的handerfunc函数,直接向前端返回结果
return
}
c.Next() //c.Next()的作用是将请求处理权交给下一个函数,即AuthMiddleware函数处理完后交给handerfunc函数继续处理。
}
}
2.写好鉴权函数后,我们需要在路由组中使用它,使用authorized.Use(AuthMiddleware())就可以在路由组中使用它
authorized := router.Group("/")
authorized.Use(AuthMiddleware())
{
authorized.GET("/test1", handerfunc1)
authorized.GET("/test2", handerfunc2)
}
3.这样我们就完成了对用户身份的校验