【发布时间】:2016-12-22 04:13:05
【问题描述】:
我正在使用 Google Apps 脚本 (GAS) 来托管网络应用程序。我希望能够看到“会话”,以便如果用户多次打开页面,我可以看到给定用户/浏览器的会话信息。我目前在客户端控制所有这些,但如果它们都在服务器端会更整洁(例如,如果在获取页面时发生错误怎么办?)。这对于正确处理用户登录尤其重要……在客户端处理这一切太难看了。
我习惯于像 ASP、ASP.NET 和 PHP 这样的具有会话和会话变量的应用程序。 GAS 的网络应用程序有类似的东西吗?谢谢!
编辑:需要明确的是,我以Me 的身份运行网络应用程序,因此我无法分辨谁是通过他们的 Google 帐户登录的。用户无需 Google 帐户即可访问该页面。
【问题讨论】:
-
您应该使用 PropertiesService 并将信息存储在用户或脚本属性中,具体取决于具体情况。例如,如果您需要跨多个打开的 Web 应用程序实例跟踪用户信息,则可以使用用户属性。当用户注销或关闭页面时,Properties Service 不会自动清除信息。缓存服务是另一种不同的临时存储选项。缓存将“超时”,但是当缓存服务失去其值并且用户停止使用您的 Web 应用时,没有“内置”方式进行同步。
-
您需要在加载 Web 应用程序时清除该用户的旧会话信息,或将其覆盖,确保不要在存储中留下任何旧数据。如果用户注销,或者您的 Web App 可以检测到页面关闭,那么您可以运行一些服务器代码来清除会话信息。
-
检测页面何时关闭并不难。无论如何,我实际上更喜欢它基于到期日期。但是,我不确定使用
PropertiesService会有什么帮助。我仍然不知道页面加载时是谁的会话,对吗?也许我没有明确说明脚本是以Me执行的,而不是作为谷歌用户执行的。所以我希望能够通过浏览器会话来区分,因为 Google 方面是匿名的。
标签: session google-apps-script