2010-01-03 70 views
1

我正在一个网站上工作,这是我的第一个Web项目。会话状态。如何使用自定义模式管理会话?

情景会话

我创建了一个数据库,为我的安全级别有点高的项目。我想为登录到我的网站的每个用户管理会话。会话状态可以使用Cookie以及URL,一次只能使用一个。

现在我回顾了所有四种会话状态模式。 即 1.是InProc 2.国家Server 3的SQL服务器4.自定义

现在从所有这些模式我在混乱哪一个,我应该使用SQL Server或自定义审查后。

基本上我想将会话相关信息存储在我自己的数据库中,而不是Aspnet_db,这是由Microsoft提供的默认数据库。我创建了与登录和注册相关的所有表格。但我不知道如何将会话存储到我的数据库中。 我需要创建哪些表以维护数据库。

我想创建一个会话和登录相关信息的完整日志到我的数据库(持续至少1年)。 我想使用machinekey作为AES和SHA1。

<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" > 
    </sessionState> 
    <machineKey decryption="AES" 
       validation="SHA1" 
       decryptionKey="7E047D50A7E430181CCAF7E0D1771330D15D8A58AEDB8A1158F97EEF59BEB45D" 
       validationKey="68B439A210151231F3DBB3F3985E220CFEFC0662196B301B84105807E3AD27B6475DFC8BB546EC69421F38C1204ACFF7914188B5003C1DCF3E903E01A03C8578"/> 

<add name="conString" connectionString="Data Source=192.168.1.5; Initial Catalog=dbName; Integrated Security=True;" providerName="System.Data.SqlClient" /> 

什么东西我需要在webconfig中指定?

我的数据源= 192.168.1.5 数据库名称= db.mdf

我需要知道什么

  1. 我需要什么样的表添加到我的 数据库来存储会话相关信息 。例如。会话ID(任何 其他领域也存储与否), 会议时间,会议开始时间, 会话结束时间,会议为止 时间。我不知道什么东西 通常被采取。
  2. 在存入数据库之前,我需要加密会话Id 。如果是的话

加密是自动的,还是我需要编写一些代码来做到这一点,而不是我在上面的web配置中写的。

  1. 如何将mode ='custom'用于使用我的数据库的web config中的 。

在下面的代码

<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" > 
</sessionState> 
+0

使用此:'' – 2012-01-13 09:24:55

回答

2

如果您使用的是SQL Server会话提供者,你应该运行aspnet_regsql创建你所需要的表

如果您不希望命令创建aspnetdb数据库,也可以使用-d标志指定自定义数据库名称。您也可以运行没有标志的命令来使用向导模式。

如果你想建立一个自定义的会话提供商(不小的任务),你可以通过查看的是通过上面的命令运行该脚本开始:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallPersistSqlState.sql 

虽然这取决于你的要求,一般会话状态的加密不会增加太多价值。但是,如果您的数据特别敏感,那么可能值得考虑。但请注意,会话状态的最大风险通常不在数据库端,而是在客户端,一个用户可以通过访问其会话cookie来窃取另一个用户的会话。因此,在我使用数据库端进行加密之前,我至少会在引用会话cookie的所有页面中使用SSL。

如果有帮助,我会在书中介绍自定义会话状态的许多方面,尽管我不想演示完整的自定义提供程序:Ultra-Fast ASP.NET

0

问题集1:

  1. 取决于你如何实现你的供应商。 MSDN会告诉你如何做到这一点。
  2. 我会说不,但我不是安全专家。

盘2:

  1. 你是什么意思? (如果你使用的SQL Express与本地主机替换\ SQLEXPRESS。)

    aspnet_regsql –E -S localhost –ssadd –sstype p