我们已经构建了一个内部网应用程序,用户必须登录才能执行某些任务......我们必须确保没有“应用程序用户”同时登录多次。
所以我现在所做的是将当前的 asp .net 会话 ID 存储在数据库中,然后在每个页面加载时进行比较,无论它们是否相同。当用户登录时,会话 ID 存储在数据库中。
但是通过使用这种检查,总是需要一个数据库选择。所以我不太喜欢这种方式。必须有更优雅的方法来解决这个问题,或者?
我们使用 ASP .Net2, C#..
提前感谢您的任何意见
[信息更新]
我已经创建了一个自定义 Membershipprovider 和一个自定义 Membershippuser。Membershipuser 有一个名为“StartSession(string sessionId)”的方法,在用户登录时使用。
另一个方法 CheckSession(string sessionId) 在每次回发时使用,它将当前会话 ID 与存储在数据库中的会话 ID 进行比较。
[更新] 感谢大家的意见。我现在将使用缓存来防止永久数据库访问。我首先想到的是已经有一个类或已经在处理这个问题的东西了。
您现有的将此信息存储在数据库中的方法是合理的,如果事情扩大,它会有所帮助。
但是,您也可以使用 System.Web.Caching.Cache 对象来跟踪用户当前的会话。如果在缓存对象中找到信息失败,则回退到从数据库读取它,然后将该信息放入缓存中以供后续请求使用。
| 归档时间: |
|
| 查看次数: |
8641 次 |
| 最近记录: |