区分已记录的用户

时间:2016-05-03 23:07:26

标签: sql-server vb.net winforms

我正在尝试在我的应用的每个winform中获取当前记录(在我的应用中)用户,但我不知道如何区分应用中的多个已记录用户。

我有一个ActiveUsers SQL表,SessionIDUserID来标识单个用户。

如果应用程序异常终止,我该如何关闭会话(从userid表中删除ActiveUsers)?

任何帮助?

编辑:该应用程序由多个winforms组成,旨在同时在多个Pcs中运行。用户在应用程序中创建并存储在SC_User表中,UserID为PK。 ActiveUsers表格为UserID为FK,SessionID为PK。我想要的是在任何winform中使用应用程序获取用户的UserID并使用它来例如更改该用户的应用程序语言首选项。对于单个用户,我在登录时在UserID插入ActiveUsers,在注销时删除。

1 个答案:

答案 0 :(得分:0)

保持应用程序范围的数据非常简单。您所要做的就是在项目中添加静态(shared在vb.net中)或singleton类,并在其中存储应用程序范围的数据。 (额外阅读:differences between singleton and static

关于第二个问题,您还没有办法知道客户端是否在没有正确注销的情况下关闭。您在这些情况下所做的是实施keep-alive机制。

一个简单的实现是在会话表中添加另一列,以便在登录用户最后一次激活时跟踪时间戳(通常,静态/单例类中的计时器将负责每个更新此列x时间,一旦此列与当前日期时间之间的差异足够大,您可以安全地假设应用程序在没有正确注销的情况下关闭。

您甚至可以在sql server上运行预定作业,以删除应用程序关闭的会话表上的记录,如果您愿意,则无​​需正确注销。