asp.net - session 状态。如何使用自定义模式管理 session ?

标签 asp.net database session session-state sessionid

我正在做一个网站,这是我的第一个网络项目。

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

我需要了解的内容

  1. 我需要添加哪些表到我的 存储session相关的数据库 信息。例如。 session ID(任何 是否也存储了其他字段), session 时间, session 开始时间, session 结束时间、 session 过期 时间。我不知道所有的事情 通常被带走。
  2. 我需要加密 Session Id 吗 在存储到数据库之前。如果是

加密将是自动的,或者除了我在上面的网络配置中编写的代码之外,我是否需要编写一些代码来执行此操作。

  1. 如何将 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/

相关文章:

mysql - 如何从具有一个值的表中删除一行,而该表包含具有不同值的第二行?

jquery - 从代码隐藏 (ASP.Net VB) 打开 jquery 弹出窗口

c# - 单个解决方案中的多个 MVC 项目

c# - ASP.Net Web Forms - 如何从页面和用户控件设置 MasterPage 的属性

sql - 为什么这不能删除重复项

php - 使用 session 和 cookie 中的 key 保护 session ?

sql - 想出算法 : Calculate full earnings for every company

database - 这是将远程数据库复制到开发中最安全的方法吗?

php - 取消设置多维数组

java - 跟踪用户是否在无状态 Web 应用程序中登录?