数据库中用户表中的会话ID - 我应该使用asp.net会话ID还是通过序列创建一个

时间:2012-10-23 11:39:26

标签: c# asp.net sql-server oracle10g security

我正在asp.net 4.0中设计一个内部应用程序,并且必须使用窗口身份验证。数据库和应用程序都在不同的服务器上。

环境

Asp.net 4.0,Vb.net 4.0,Oracle 10g,窗口服务器2003和IIS 6.0

方案

当用户登陆第一页时,系统将为该用户分配会话ID,该ID将保存在LAST_SESSION_ID列下的用户表中的数据库中。因此,每次他访问应用程序(或新会话)时,系统都会覆盖此LAST_SESSION_ID列。我将会话ID保存在会话变量中并将其传递给每个DML事务上的oracle存储过程,并将此id与LAST_SESSION_ID列中的值进行比较,如果它们相同则表示用户的会话仍处于活动状态。

问题

  
      
  • 我想知道我是否应该在oracle数据库中创建唯一的会话ID(通过序列)或使用asp.net session'HttpContext.Current.Session.SessionID'生成的会话ID?要获得唯一的asp.net会话ID,我必须使用以下设置设置webconfig文件,我不知道这是不是一个好主意,因为我之前没有使用过这种技术。
  •   

  
      
  • 上述方案有更好的解决方案吗?举个例子,我设计的系统是200-300个用户(Timesheet APP),这是一个内部应用程序,因此安全性不是一个大问题。在用户将请求发送到数据库服务器之前,我不能只检查会话,而不是在存储过程中验证会话吗?
  •   

1 个答案:

答案 0 :(得分:0)

如果出于安全原因,答案是您需要根据Web服务器验证的用户名,在每次请求时检查用户访问权限。

不要担心他们如何进入第2页,只要问“他们是否可以看到第2页”。