package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/login", func(c *gin.Context) {
//cookie的key和value,生存时间60s,127.0.0.1可以存这个cookie
c.SetCookie("abc", "123", 60, "/",
"127.0.0.1", false, true)
//返回信息
c.String(http.StatusOK, "Login success!")
})
//需要权限的方法需要认证
r.GET("/index", AuthMiddleWare(), func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"data": "hemo",
})
})
r.Run()
}
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
}
}
为了简单我这里用到了gin框架
效果
cookie的缺点
不安全,明文
增加带宽消耗
可以被禁用
cookie有上限