【发布时间】:2010-12-31 23:15:52
【问题描述】:
我正在开发一个网站,这是我的第一个网络项目。
会话场景
我为我的项目创建了一个安全级别略高的数据库。我想为每个登录到我的网站的用户管理会话。会话状态可以使用 Cookie 和 URL,一次只能使用一个。
现在我介绍了所有四种会话状态模式。 IE 1. InProc 2. 状态服务器 3. Sql Server 4. 自定义
现在在回顾了所有这些模式之后,我很困惑我应该使用 Sql Server 还是自定义。
基本上,我想将会话相关信息存储在我自己的数据库中,而不是 Microsoft 提供的默认数据库 Aspnet_db。我已经创建了与登录和注册相关的所有表。但我不知道如何将会话存储到我的数据库中。 我需要创建哪些表才能维护到数据库中。
我想在我的数据库中创建一个完整的会话日志和登录相关信息(至少持续 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
我需要了解的内容
- 我需要将哪些表添加到我的 存储会话相关的数据库 信息。例如。会话 ID(任何 其他字段是否也被存储), 会话时间,会话开始时间, 会话结束时间,会话过期 时间。我不知道所有的事情 通常采取。
- 我是否需要加密会话 ID 在存储到数据库之前。如果是
加密将是自动的,或者我是否需要编写一些代码来执行此操作,而不是我在上面的 Web 配置中编写的代码。
- mode='custom' 将如何用于 使用我的数据库进行网络配置。
在下面的代码中
<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" >
</sessionState>
【问题讨论】:
-
使用这个:
<sessionState mode="SQLServer" timeout="50" allowCustomSqlDatabase="true" sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=MyCustomStateDb"/> <compilation debug="false">
标签: asp.net database session session-state sessionid