【发布时间】:2011-09-29 04:37:17
【问题描述】:
我正在实施表单身份验证,例如(我需要根据一些不是来自活动目录或数据库的条件创建票证)
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
"userName",
DateTime.Now,
DateTime.Now.AddMinutes(30), // value of time out property
false, // Value of IsPersistent property
String.Empty,
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie authCookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
encryptedTicket);
authCookie.Secure = true;
Response.Cookies.Add(authCookie);
and my web.config
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout="30"
name="test"
path="/"
requireSSL="false"
slidingExpiration="true"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" />
</authentication>
</system.web>
如果启用了浏览器 cookie,则此实现工作正常。虽然禁用 cookie 时它不起作用(我试过 Cookieless="useuri" 但它没有帮助)
你们能告诉我在这种情况下我应该如何实现无 cookie 表单身份验证
我想将 uri 用于身份验证 cookie 或任何其他更好的解决方案?
【问题讨论】:
-
那么您想在无 cookie 的环境中使用 cookie 吗? :S
-
将其存储在会话中,它是一个 cookie,但 cookie 驻留在 Web 服务器上
-
我想使用 uri 但它不起作用,因为我认为我正在将 cookie 添加到响应对象 @Ranhiru
-
@CBRRacer:它是一个 cookie :) 数据驻留在 Web 服务器中,但必须启用 Web 服务器唯一标识每个用户的 cookie。否则,无 cookie 意味着将会话 ID 嵌入到 URL 中。看看tugberk给出的答案。
-
@RanhiruCooray 实际上这就是我所说的,但我没有指定它的 URL 方面。
标签: asp.net c#-4.0 forms-authentication security