session - 在 golang 中检查 HTML 文件中的用户 session

标签 session go

如何直接在 HTML 文件中查看用户登录 session ?我已经在 google 上搜索过了,但是我无法直接在 html 文件中找到检查 session ,难道不能这样做吗?

我唯一能找到的就是通过 ExecuteTemplate() 传递它,这是我唯一能做的吗?

最佳答案

根据您的描述,我认为您在 .go 文件(handlerfunc)中有一个可访问的 session 变量,并希望在 html 文件中使用它。这个比较简单,就是一个值。是的,通过 ExecuteTemplate 传递它是正确的方法。 session 只是一个 cookie,它随请求一起从浏览器发送到您的服务器,它位于请求 header 中。

您可以在您的函数集中为访问某种全局变量的模板设置一个函数,但随后您会遇到跨 goroutine 同步的问题(每个请求处理程序都在 goroutine 中运行),因此更简单的方法最好。

您不应该尝试在模板中对 session 执行操作,例如解密它和提取用户 ID - 这更适合您的处理程序,并且在那里比在模板中更安全。

首先使用您喜欢的库从 cookie 中提取它(您正在加密您的 session ,对吗?),然后将它添加到 View 上下文中(假设您使用值映射)。

// use a lib like gorilla sessions
session, err := store.Get(r, "session-name")
userID := session.Get("user")

// store data (here in a map[string]interface{})
data := make(map[string]interface{})
data["userID"] = userID 

// Send this data to the view
t.Execute(w, data) // Sets the . variable in templates

然后在 View 中,只需使用类似这样的方法来访问您需要的值:

{{ .userID }}

或者是的,你可以只使用 javascript 来访问 session ,但你需要知道它是如何加密的,如果它包含任何有值(value)的信息,这可能是一个安全漏洞 - 任何 js 可以得到你的用户可以得到也是。

关于session - 在 golang 中检查 HTML 文件中的用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055222/

相关文章:

go - 与多个包共享全局定义的 db conn

go - 有没有办法在 Go 中的任何导入之前设置环境变量?

c# - 创建新 session ID(无缝 ID 传输)

php - 密码保护页面的最佳方法

session - session 真的违反了 RESTful 原则吗?

types - 去Go语言: Type assertion on customized type

go - 在 Go 中使用 secp256k1

php - 在不同的页面中存储和回显 session 数据

php - 使用 INSERT 和 WHERE 进行 MySQLi 查询,可能吗?

go - vim-go 找不到需要的库