(1) 首先的设了form 认证
system.web>
<authentication mode="Forms">
<forms domain="sdf" timeout="20" loginUrl="Login.aspx" path="/"></forms>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
<system.web>
(2)在default.aspx.cs中加入代码。
//FormsAuthentication.SetAuthCookie("candu", true, FormsAuthentication.FormsCookiePath);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "candu", DateTime.Now, DateTime.Now.AddMinutes(20), false,"echo");
// generate new identity
// FormsIdentity identity = new FormsIdentity(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
// write to client.
Response.Cookies.Add(cookie);
Response.Write(HttpContext.Current.User.Identity.Name);
执行 Response.Write(HttpContext.Current.User.Identity.Name);得到是空值。
这时我真的不明白。
后来发现原来 Response.Cookies.Add(cookie);在第一次请求时,并没有马上发送到客户端。
所以取不到HttpContext.Current.User.Identity.Name的值。
第二次请求时,cookie已经发到客户端了,这时再
Response.Write(HttpContext.Current.User.Identity.Name);
就有值了。