Session 在golang中检查HTML文件中的用户会话

Session 在golang中检查HTML文件中的用户会话,session,go,Session,Go,如何直接在HTML文件中检查用户登录会话?我已经在google上搜索过了,但是我无法直接在html文件中找到检查会话,这是不可能的吗 我唯一能找到的是通过ExecuteTemplate(),这是我唯一能做的事吗?根据您的描述,您在.go文件(handlerfunc)中有一个会话变量可访问,并且希望在html文件中使用它。这相对简单,只是一个值。是的,通过ExecuteTemplate传递它是正确的方法。会话只是一个cookie,随请求一起从浏览器发送到服务器,它位于请求头中 您可以在func集合

如何直接在HTML文件中检查用户登录会话?我已经在google上搜索过了,但是我无法直接在html文件中找到检查会话,这是不可能的吗


我唯一能找到的是通过
ExecuteTemplate()
,这是我唯一能做的事吗?

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

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

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

首先使用首选库从cookie中提取它(您正在加密会话,对吗?),然后将其添加到视图上下文中(假设您使用了值映射)

然后,在视图中,只需使用类似以下内容访问所需的值:

{{ .userID }}

或者,您可以只使用javascript访问会话,但您需要知道它是如何加密的,如果它包含任何有价值的信息,这可能是一个安全漏洞—js可以从您的用户那里获得的任何信息都可以获得。

模板化是目前最普遍的方法。ExecuteTemplate有第三方替代方案,例如

另一种方法是执行“客户端模板化”,其中所有渲染都使用JavaScript在客户端完成,并使用REST-like/JSON API与服务器通信

我应该选择哪个?这取决于您的用例。如果您的网站需要实时更新,并且需要在服务器上来回执行大量操作,那么客户端脚本可以使事情变得非常简单,因此您只需使用JavaScript函数来呈现部分页面,而不必使用JavaScript函数和等效的Go函数。它还可以创建更平滑的整体界面;例如,如果一个操作需要几秒钟“处理”,则可以构建客户端模板和呈现,这样页面就不必完全刷新(从而避免页面刷新时出现“白色闪烁”)

另一方面,如果您有一个简单的应用程序,那么构建服务器端模板的速度会更快(您不必构建API),并导致更快的整体页面加载时间



当然,应用程序很少是全客户端或全服务器端的。在JavaScript中读取URL是很困难的,所以我见过有人使用模板引擎将对象ID注入JavaScript常量。即使采用全客户端方法,使用模板引擎来标准化所有页面之间的导航/页脚/站点布局(在服务器启动时呈现所有模板)也是很有用的。

调用cookie值是什么意思?请给出一个用例好吗?@leadbebebop啊,对不起,我弄不清楚,我已经编辑过了,所以你想在浏览器中访问会话吗?您可以使用JavaScript来执行此操作。@leadbebebop在go中没有像PHP那样获取会话的函数?它是
(int)
而不是
.int
。如果模板是标题模板呢?我应该为所有方法都这样做吗?Hi@kreamik我遇到了完全相同的问题,并且一直在到处搜索,你是否设法找到一种方法来检查模板中的用户会话?就像上面的ansers一样,我为每个页面复制会话
{{ .userID }}