Asp.net mvc 3 没有会话没有cookies?

Asp.net mvc 3 没有会话没有cookies?,asp.net-mvc-3,Asp.net Mvc 3,我无法在不使用会话和cookie的情况下访问用户信息。 如何在没有会话和cookie的情况下管理用户信息?? 请帮助您可以使用MySQL数据库存储用户信息。但不幸的是,如果不使用会话变量,您将不得不在url变量中传递用户的凭据,如?username=dave password=cat(请不要这样做),或者您只需要了解一些有关安全性的知识,并以正确的方式进行操作(首选).假设您正在谈论web浏览器和HTTP:您不能 HTTP是一种无状态的协议。要使用服务器端状态重载它,需要一些唯一标识请求者的方法

我无法在不使用会话和cookie的情况下访问用户信息。 如何在没有会话和cookie的情况下管理用户信息??
请帮助

您可以使用MySQL数据库存储用户信息。但不幸的是,如果不使用会话变量,您将不得不在url变量中传递用户的凭据,如?username=dave password=cat(请不要这样做),或者您只需要了解一些有关安全性的知识,并以正确的方式进行操作(首选).

假设您正在谈论web浏览器和HTTP:您不能

HTTP是一种无状态的协议。要使用服务器端状态重载它,需要一些唯一标识请求者的方法。Cookie是web浏览器维护客户端状态的唯一方式


[编辑以说明]然而,我应该指出,可以想象在URI中嵌入有限数量的状态数据,作为查询的一部分或URI的片段部分。它是有限的,因为大多数(每个?)实现对URI的最大长度施加了某种限制。此外,您的web应用程序需要确保状态数据正确地从一个URL传播到另一个URL。为了安全起见,应该对其进行加密,以免URI旋转使您的站点被破解。

这似乎是下面不必要的要求警告,但我会尝试一下

当用户登录时,向他们颁发安全令牌。将该令牌存储在数据库中。令牌应包含任意值(例如十六进制编码的GUID),而不是名称或密码。数据库还存储令牌和实际用户ID之间的关系。令牌应具有过期日期

将令牌与每个请求一起作为URL的一部分传递(ASP.Net为无Cookie会话执行此操作)。因为您不想使用会话状态,所以必须将与用户相关的任何信息存储在其他地方,可能是数据库。每个页面上的每个URL都需要有令牌

您还可以利用web浏览器中的非安全信息

在ASP.Net中,即使对于非常轻量级的对象,会话也是不切实际的。这是因为会话访问是如何序列化的;假设您有一个仪表板页面,其中充满了向WCF端点发出请求的小部件,这些小部件需要知道与会话相关的信息。如果该端点使用会话状态,则性能将受到影响,因为每个请求都将串行执行

…如果对同一会话发出两个并发请求(通过使用 相同的SessionID值),第一个请求以独占方式访问 会话信息。第二个请求仅在 第一个请求完成了


每个页面上的隐藏输入都可以做到这一点,但您将无法使用POST获取所有信息,而无法使用GET。这是非常不值得推荐的。

你不能。为什么要这样做?您可以使用http基本身份验证并通过用户名跟踪所有内容。它不使用cookie或会话,但可以通过将所有内容绑定到用户名而不是随机会话ID+cookie来模拟会话