main.go
package main
import (
"gindemo13/models"
"gindemo13/routers"
"html/template"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/redis"
"github.com/gin-gonic/gin"
)
func main() {
// 创建一个默认的路由引擎
r := gin.Default()
//自定义模板函数 注意要把这个函数放在加载模板前
r.SetFuncMap(template.FuncMap{
"UnixToTime": models.UnixToTime,
})
//加载模板 放在配置路由前面
r.LoadHTMLGlob("templates/**/*")
//配置静态web目录 第一个参数表示路由, 第二个参数表示映射的目录
r.Static("/static", "./static")
//配置session中间件
store, _ := redis.NewStore(10, "tcp", "localhost:6379", "", []byte("secret111"))
r.Use(sessions.Sessions("mysession", store))
routers.AdminRoutersInit(r)
routers.ApiRoutersInit(r)
routers.DefaultRoutersInit(r)
r.Run()
}
controllers->itying->defaultController.go
package itying
import (
"net/http"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
)
type DefaultController struct{}
func (con DefaultController) Index(c *gin.Context) {
//设置sessions
session := sessions.Default(c)
//配置session的过期时间
session.Options(sessions.Options{
MaxAge: 3600 * 6, // 6hrs MaxAge单位是秒
})
session.Set("username", "张三 111")
session.Save() //设置session的时候必须调用
c.HTML(http.StatusOK, "default/index.html", gin.H{
"msg": "我是一个msg",
"t": 1629788418,
})
}
func (con DefaultController) News(c *gin.Context) {
//获取sessions
session := sessions.Default(c)
username := session.Get("username")
c.String(200, "username=%v", username)
}