MVC 结合session
// +build go1.9
package main
import (
"fmt"
"time"
"github.com/kataras/iris"
"github.com/kataras/iris/mvc"
"github.com/kataras/iris/sessions"
)
// VisitController处理根路由。.
type VisitController struct {
//当前请求 Session
//它的初始化是由我们添加到`visitApp`的依赖函数发生的。
Session *sessions.Session
//从MVC绑定的time.time,
//绑定字段的顺序无关紧要。
StartTime time.Time
}
// Get handles
// Method: GET
// Path: http://localhost:8080
func (c *VisitController) Get() string {
//它将整数的“访问”值递增1,
//如果带有“访问”键的条目不存在,它将为您创建。
visits := c.Session.Increment("visits", 1)
// write the current, updated visits.
since := time.Now().Sub(c.StartTime).Seconds()
return fmt.Sprintf("%d visit from my current session in %0.1f seconds of server's up-time",visits, since)
}
func newApp() *iris.Application {
app := iris.New()
sess := sessions.New(sessions.Config{Cookie: "mysession_cookie_name"})
visitApp := mvc.New(app.Party("/"))
//将当前* session.Session绑定到`VisitController.Session`
//和time.Now()到`VisitController.StartTime`。
visitApp.Register(
//如果依赖是一个接受的函数
//一个Context并返回一个值
//然后控制器解析此函数的结果类型
//并且在每个请求上它将使用Context调用该函数
//并将结果(此处为* sessions.Session)设置为控制器的字段。
//如果没有字段或函数的输入参数,则注册依赖项
//使用者然后在服务器运行之前忽略这些依赖项,
//这样你就可以绑定很多dependecies并在不同的控制器中使用它们。
sess.Start,
time.Now(),
)
visitApp.Handle(new(VisitController))
return app
}
func main() {
app := newApp()
// 1.打开浏览器(不在私人模式下,如google的隐身模式)
// 2.导航到http:// localhost:8080
// 3.刷新页面一些次数
// 4.关闭浏览器
// 5.重新打开浏览器并重新播放2
app.Run(iris.Addr(":8080"), iris.WithoutVersionChecker)
}
当前内容版权归 studyiris.com 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 studyiris.com .