我正在做一个网站,这是我的第一个网络项目。
session 场景
我为我的项目创建了一个安全级别稍高的数据库。我想为每个登录我网站的用户管理 session 。 session 状态可以使用 Cookie 和 URL,一次只能使用一个。
现在我回顾了所有四种 session 状态模式。 IE 1. InProc 2. State Server 3. Sql Server 4. 自定义
现在,在回顾了所有这些模式之后,我很困惑应该使用 Sql Server 还是 Custom。
基本上我想将 session 相关信息存储在我自己的数据库中,而不是 Aspnet_db,后者是 Microsoft 提供的默认数据库。我已经创建了所有与登录和注册相关的表。但我不知道如何将 session 存储到我的数据库中。 我需要创建哪些表以便维护到数据库中。
我想在我的数据库中创建一个完整的 session 日志和登录相关信息(至少保留 1 年)。 我想使用机器 key 作为 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
我需要了解的内容
- 我需要添加哪些表到我的 存储session相关的数据库 信息。例如。 session ID(任何 是否也存储了其他字段), session 时间, session 开始时间, session 结束时间、 session 过期 时间。我不知道所有的事情 通常被带走。
- 我需要加密 Session Id 吗 在存储到数据库之前。如果是
加密将是自动的,或者除了我在上面的网络配置中编写的代码之外,我是否需要编写一些代码来执行此操作。
- 如何将 mode='custom' 用于 使用我的数据库进行网络配置。
在下面的代码中
<sessionState mode="Custom" cookieless="AutoDetect" timeout="15" regenerateExpiredSessionId="true" stateNetworkTimeout="10" >
</sessionState>
最佳答案
如果您使用的是 SQL Server session 提供程序,您应该运行 aspnet_regsql
来创建您需要的表:
aspnet_regsql –E -S localhost –ssadd –sstype p
(如果您使用的是 SQL Express,请将 localhost 替换为 .\SQLEXPRESS)
如果您不希望命令创建 aspnetdb 数据库,您还可以使用 -d 标志指定自定义数据库名称。您也可以运行不带标志的命令以使用向导模式。
如果你想构建一个自定义 session 提供程序(不是一个小任务),你可以从查看上面命令运行的脚本开始:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallPersistSqlState.sql
尽管这取决于您的要求,但 session 状态的加密通常不会增加太多值(value)。但是,如果您的数据特别敏感,则可能值得考虑。但是请注意, session 状态的最大风险通常不在数据库端,而是在客户端,一个用户可以通过访问他们的 session cookie 来窃取另一个用户的 session 。因此,在我求助于数据库端加密之前,我至少会为所有引用 session cookie 的页面使用 SSL。
如果有帮助,我在书中介绍了自定义 session 状态的许多方面,尽管我没有演示完整的自定义提供程序:Ultra-Fast ASP.NET .
关于asp.net - session 状态。如何使用自定义模式管理 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994695/