我正在开发一个网站,这是我的第一个 Web 项目。
会话场景
我为我的项目创建了一个安全级别有点高的数据库。我想为每个登录到我的网站的用户管理会话。会话状态可以使用 Cookie 和 URL,一次只能使用一个。
现在我回顾了所有四种会话状态模式。即 1. InProc 2. State Server 3. Sql Server 4. Custom
现在,在回顾了所有这些模式之后,我很困惑我应该使用 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' 用于 Web 配置。
在以下代码中
<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" >
</sessionState>