我正在用 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/sessions和https://github.com/codegangsta/negroni并在中间件内创建连接逻辑。