我正在Go中编写一个Web服务器并且问自己,有条件地隐藏HTML页面的一部分的传统方式是什么。 如果我只想显示“登录”按钮,当用户未登录时,我将如何实现这样的目标? 它是用模板引擎还是其他东西实现的?
感谢您抽出宝贵时间阅读并回答:)
答案 0 :(得分:3)
您只需要为模板提供一个结构并管理其中的渲染。
这是一个测试的工作例子:
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)
}
要管理连接,您可以将http://www.gorillatoolkit.org/pkg/sessions与https://github.com/codegangsta/negroni一起使用,并在中间件中创建连接逻辑。
答案 1 :(得分:-1)
只需在用户登录时启动会话。在会话中设置必要的值,然后使用session在javascript中使用if标签隐藏html u want。它是解决此类问题的非常简单和最好的方法。
答案 2 :(得分:-3)
您可以尝试这样的事情
<?php
if($_SESSION['user']){}else{
echo '<button onclick="yourfunction();">sign in</button>';
}
?>
因此,如果他们没有登录,这将显示。