如果用户登录则隐藏 HTML 内容

cal*_*son 5 html templates go

我正在用 Go 编写一个 Web 服务器,并问自己,有条件隐藏 HTML 页面一部分的传统方法是什么。如果我只想在用户未登录时显示“登录”按钮,我将如何实现这样的目标?是通过模板引擎还是其他什么方式实现的?

感谢您花时间阅读并回答这个问题:)

小智 5

您只需为模板提供一个结构并管理其中的渲染即可。

这是一个要测试的工作示例:

package main

import (
    "html/template"
    "net/http"
)

func main() {
    http.HandleFunc("/", helloHandler)
    http.ListenAndServe(":8000", nil)
}

type User struct {
    Name string
}

func helloHandler(w http.ResponseWriter, r *http.Request) {
    t := template.New("logged exemple")
    t, _ = t.Parse(`
        <html>
        <head>
            <title>Login test</title>
        </head>
        <body>

        {{if .Logged}}
            It's me {{ .User.Name }}
        {{else}}
            -- menu --
        {{end}}


        </body>
        </html>
    `)

    // Put the login logic in a middleware
    p := struct {
        Logged bool
        User   *User
    }{
        Logged: true,
        User:   &User{Name: "Mario"},
    }

    t.Execute(w, p)
}
Run Code Online (Sandbox Code Playgroud)

要管理连接,您可以使用http://www.gorillatoolkit.org/pkg/sessionshttps://github.com/codegangsta/negroni并在中间件内创建连接逻辑。