1

我在 Windows 窗体应用程序中嵌入了一个 WebControl 来访问服务器端页面,该页面在登录后可用。通常,当用户登录时,应用程序(用 RoR 编写)在客户端创建一个 cookie。我正在使用 CookieStore(Rails 会话存储)在客户端存储会话数据。此外,我正在使用设置了特定数据路径的 Web 会话提供程序将会话存储在磁盘上。为了增加这个问题,我在几个 Web 会话提供者之间共享该数据路径。

现在,我的问题是,如果用户通过单击注销链接注销,则页面更新正常。用户不能再执行需要认证的操作。但是,正如我所见,Cookies 数据库不会立即更新(我从文件的修改日期以及保持不变的 cookie 值中看到它)。我猜首先更新了一些内存存储,然后将其转储到磁盘中。我无法确定何时,但我注意到一段时间后(似乎是随机的)Cookies 数据库在磁盘上更新。但是,这仍然会产生一个问题,因为如果用户在注销后立即关闭应用程序,并且 Cookies 数据库还没有更新,那么它将引用旧的 cookie。预计,当用户再次打开应用程序时,他将显示为已登录。我知道这可以通过在服务器端存储会话来部分缓解,但我更愿意保持这种方式。

所以,我的问题是:有没有办法强制在磁盘上自动更新“Cookies”数据库?

4

1 回答 1

1

我相信我可以通过调用将值刷新到磁盘

WebCore.Shutdown();

当我的应用程序关闭时。

我将对此进行更多测试。

于 2013-12-23T21:32:48.990 回答