为ASP.NET应用程序提出的要求之一是我们全局禁用会话状态。 (这不可协商。)
另一个要求是我们有一些用于身份验证的方法。我正在考虑使用ASP.NET的成员资格提供者模型。
是否可以在没有会话状态的情况下进行用户身份验证?
我们正在寻找的具体用户身份验证示例是:
有没有办法用cookies做到这一点?
这可以安全地完成,因此cookie不容易被欺骗吗?
ASP.NET中是否有内置功能来支持这一功能,还是我们需要推出自己的方法?
答案 0 :(得分:12)
ASP.NET Forms身份验证不使用SessionState
。它使用cookie来存储身份验证票证。
您还可以通过编辑web.config
文件强制通过SSL渠道发送身份验证票证。
您需要的所有功能都可以在ASP.NET中内置。
答案 1 :(得分:2)
当然,cookie会做到这一点。
想想基本面。无论如何,会话状态由cookie管理。
这是你做的。
当他们登录时,你会使用他们的用户ID和超时(因此登录仅持续30分钟或其他任何时间)。
取出该字符串,并将其哈希。
(java,不重要)
String cookie = userid + ":" + timeString + ":" + md5(userid + ":" + timeString + ":" + "secretpassword");
然后,当请求到达您的网站时,请检查Cookie。首先检查它的完整性。
String parts[] = cookie.split(":");
String newHash = md5(parts[0] + ":" + parts[1] + ":" + "secret password");
if (!newHash.equals(parts[2])) {
// boom, cheater!
}
然后检查时间字符串以查看它们是否仍然“登录”,并从那里开始。
确保在每次请求时都要更新cookie。
答案 2 :(得分:0)
是的,你可以使用cookies。
Cookie的问题是,您无法将大量数据保留给他们。对于向导类型注册,我将数据存储在数据库中,然后将行密钥/ Id存储在加密的cookie中。这样,当用户移动到下一步时,您可以从数据库中检索数据。
对于Cookie,您可以为cookie值添加时间戳和加密。我通常不管理用户的身份验证状态。我使用内置的FormsAuthentication类来管理我的Web应用程序的这个方面。
大型网站如:Myspace和Live Search Club,完全依赖cookie作为国家管理。