1. Cookie练习

  • 模拟实现权限验证中间件

    • 有2个路由,login和home
    • login用于设置cookie
    • home是访问查看信息的请求
    • 在请求home之前,先跑中间件代码,检验是否存在cookie
  • 访问home,会显示错误,因为权限校验未通过

Cookie练习 - 图1

  • 然后访问登录的请求,登录并设置cookie

Cookie练习 - 图2

  • 再次访问home,访问成功

Cookie练习 - 图3

  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. )
  6. func AuthMiddleWare() gin.HandlerFunc {
  7. return func(c *gin.Context) {
  8. // 获取客户端cookie并校验
  9. if cookie, err := c.Cookie("abc"); err == nil {
  10. if cookie == "123" {
  11. c.Next()
  12. return
  13. }
  14. }
  15. // 返回错误
  16. c.JSON(http.StatusUnauthorized, gin.H{"error": "err"})
  17. // 若验证不通过,不再调用后续的函数处理
  18. c.Abort()
  19. return
  20. }
  21. }
  22. func main() {
  23. // 1.创建路由
  24. r := gin.Default()
  25. r.GET("/login", func(c *gin.Context) {
  26. // 设置cookie
  27. c.SetCookie("abc", "123", 60, "/",
  28. "localhost", false, true)
  29. // 返回信息
  30. c.String(200, "Login success!")
  31. })
  32. r.GET("/home", AuthMiddleWare(), func(c *gin.Context) {
  33. c.JSON(200, gin.H{"data": "home"})
  34. })
  35. r.Run(":8000")
  36. }

访问 /home 和 /login进行测试