MVC 中使用会话

未匹配的标注

MVC 会话机制

// +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 {
    // 当前请求的会话,
    // 通过我们添加到 `visitApp` 的依赖函数完成初始化。
    Session *sessions.Session

        // 在 Controller 中绑定了 time.time,字段的顺序无关紧要。
    StartTime time.Time
}

// Get 处理方法
// Method: GET
// Path: http://localhost:8080
func (c *VisitController) Get() string {
        // 每次访问,自增 "visits" 
        // 如果 "visits"  不存在,将会创建一个
    visits := c.Session.Increment("visits", 1)
    // 使用当前更新过的 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 并且返回单只的函数
                // 这个函数的结果将被控制器解析。
                // 当每个请求到来的时候,它将调用这个带有上下文的函数
                // 并且设置结果(这里是 *sessions.Session )到控制器字段。
                //
                // 如果依赖项注册时没有字段或函数的输入参数作为使用者,
                // 那么这些依赖项将在服务器运行之前被忽略,
                // 因此您可以绑定许多依赖项并在不同的控制器中使用它们。

        sess.Start,
        time.Now(),
    )
    visitApp.Handle(new(VisitController))

    return app
}

func main() {
    app := newApp()

        // 1. 打开浏览器(非私有模式)
        // 2. 打开网址: http://localhost:8080
        // 3. 刷新页面几次
        // 4. 关掉浏览器
        // 5. 重新打开浏览器,并且重复步骤2
    app.Run(iris.Addr(":8080"), iris.WithoutVersionChecker)
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/iris-go/10/mvc_...

译文地址:https://learnku.com/docs/iris-go/10/mvc_...

上一篇 下一篇
讨论数量: 1
发起讨论 只看当前版本


z_golang
iris 更新后的一些改动的疑问
0 个点赞 | 5 个回复 | 问答 | 课程版本 10