package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
// 权限控制,局部中间件
func Middleware() gin.HandlerFunc {
return func(c *gin.Context) {
// 获取客户端的cookie并进行校验
if cookie, err := c.Cookie("user_cookie"); err == nil {
if cookie == "usermosson" {
c.Next() // ?
return
}
}
c.JSON(http.StatusUnauthorized, gin.H{"error": "StatusUnauthorized"})
// 若验证不通过,则不再调用后续的处理函数
c.Abort()
return
}
}
func main() {
router := gin.Default()
// 登陆请求
router.GET("/login", func(c *gin.Context) {
// 设置cookie
//c.SetCookie("username", "mosson", 60, "/", "localhost", false, true)
c.SetCookie("user_cookie", "usermosson", 1000, "/", "localhost", false, true)
c.String(http.StatusOK, "login success")
})
// home 请求
router.GET("/home", Middleware(), func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"data": "home"})
})
_ = router.Run(":8001")
}
// 问题描述,设置cookie不成功,各位小伙伴有时间的麻烦看一下哦!
和代码无关,我访问地址有问题,我访问的是 127.0.0.1:8001,应该是localhost:8000
127.0.0.1通常是分配给“环回”或本地接口的IP地址。这是一个只能在同一主机内通信的“假”网络适配器。当您希望具有网络功能的应用程序仅为同一主机上的客户机提供服务时,通常会使用这种方法。在127.0.0.1上监听连接的进程将只接收该套接字上的本地连接。
“localhost”通常是127.0.0.1 IP地址的主机名。它通常在/etc/hosts中设置(或者在%WINDIR%下的等效窗口名为“hosts”)。您可以像使用任何其他主机名一样使用它—尝试“ping localhost”,看看它是如何解析为127.0.0.1的。
0.0.0.0有几个不同的含义,但是在本文中,当服务器被告知监听0.0.0.0时,这意味着“监听每个可用的网络接口”。从服务器进程的角度来看,IP地址为127.0.0.1的环回适配器与机器上的任何其他网络适配器一样,因此被告知监听0.0.0.0的服务器也将接受该接口上的连接。
#1