我知道对此有很多意见,但我有一个应用程序作为一个CGI应用程序运行了20年,并且已经能够允许不同的用户在不同的选项卡/窗口上活跃地连接到不同的模式。现在我发现我陷入了困境……
在单个LAMP实例上,我可能有100个客户端(模式)和1000个用户。它们习惯于在一个客户端中支持2+个用户,或者支持2+个用户从不同的浏览器选项卡访问不同的客户端。这不是20多年后我就能从用户那里拿走的东西。
到目前为止,我使用基本的PHP身份验证,并且可以看到服务器上的文件在我通过新选项卡登录到新用户的第二次更改(服务器上的PHP文件与上次登录相同)。先前的连接信息被新信息覆盖…
有没有什么东西(比如angular模块或php模块)可以让这成为可能,而不需要大量的重写?TIA
答案是-使用sessionStorage来存储与您的用户及其当前选择的数据库模式相关的任何字符串表示(或者根据登录到应用程序的用户保持隔离的任何重要内容)。
$rootScope在所有选项卡之间共享,localStorage和cookies也是如此。localStorage甚至可以在浏览器关闭和重新打开时存活。
sessionStorage的作用域为"per tab/window"当TAB关闭时,它将被销毁。
每次调用REST API时,将用户/数据库和其他需要的信息传递给服务器。在我的情况下,这意味着使用url参数隐藏使用重写模块在apache和丢弃引用php的$_SESSION。除了已经返回的数据之外,您不需要向客户端传递任何其他数据。
我创建了一个$rootScope函数来将sessionStorage转换为数组,另一个函数用于处理从一个"帐户"切换到另一个"帐户"。
这是一点工作- 300+ javascript文件和300+ php文件编辑使用我的美妙的vi IDE,但其中99%是重复的变化。一旦我掌握了它,我就能在几天内编辑它们。
它! !