【问题标题】:ASP.Net - What is current best practice for tracking state and session variables?ASP.Net - 跟踪状态和会话变量的当前最佳实践是什么?
【发布时间】:2023-07-21 22:22:02
【问题描述】:

我们正在创建一个新的面向消费者/公众的 ASP.Net 网络应用程序。有两个问题:

--使用cookie还是无cookie表单认证?

--如果我们决定完全不使用 cookie,您将如何存储本来会存储在 cookie 中的数据(客户 ID、AffiliateID 等)。 ASP.Net 身份验证框架是否跟踪诸如 CustomerID 之类的内容?

【问题讨论】:

    标签: asp.net cookies cookieless asp.net-authorization asp.net-authentication


    【解决方案1】:

    对于普通的网络应用来说,没有充分的理由使用 cookieless 身份验证 - 对 cookie 的恐惧大约在十年前就消失了。

    对于实际数据,会话对象通常是比单独的 cookie 更好的选择 - 会话 cookie 是一个单一的值,它有效地为您提供了访问您存储在服务器上的任何会话数据的密钥。在某些特殊情况下使用 session 会出现问题,例如在多服务器部署中,但在大多数应用程序中它是简单且足够的。

    标准表单身份验证系统会跟踪用户名 - 如果您不想在会话中保留任何内容,通常这足以从数据库中查找所需的任何数据。

    【讨论】:

      【解决方案2】:

      如果您进行身份验证,cookie 是常用的方法。现在很少有人会关闭 cookie,因为很多网站已经依赖它们。

      话虽如此,ASP.NET 确实支持“无cookie”身份验证。基本上它只是将身份验证令牌添加为 URL 上的参数。它解析所有出站 URL 以确保它们还包含令牌信息。就个人而言,我不会为此烦恼,而只是要求 cookie。尝试无 cookie 时还有一些额外的麻烦(例如,它会使 SEO 变得更加困难,因为搜索引擎每次抓取页面时都会看到不同的 URL)。

      【讨论】: