还是Forms验证
<authentication mode="Forms">
<forms defaultUrl="default.aspx" loginUrl="default.aspx" domain="" path="/" name=".TESTDEMO" ></forms>
</authentication>
采用Forms验证
登录后创建一个票据:
string userData = this.username.Value + "$" + userid.ToString();
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, FormsAuthentication.FormsCookieName, DateTime.Now, DateTime.Now.AddDays(1), SaveCookies, userData, FormsAuthentication.FormsCookiePath);
string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
if (SaveCookies)
UserCookie.Expires = Ticket.Expiration;
Response.Cookies.Add(UserCookie); //输出Cookie
FormsAuthentication.RedirectFromLoginPage(this.username.Value,SaveCookies);
按理说,这个Ticket的UserData中应该有username$userid
可结果呢?
在另一个页面中获取ticker并打印出属性:
FormsAuthenticationTicket ticket = ((FormsIdentity)Page.User.Identity).Ticket;
foreach (PropertyInfo p in ticket.GetType().GetProperties())
{
Response.Write(p.Name+"==="+p.GetValue(ticket,null)+"<br />");
}
值如下:
Version===2
Name===111111
Expiration===2007-6-12 9:43:08
IssueDate===2007-6-12 9:13:08
IsPersistent===False
Expired===False
UserData===
CookiePath===/
UserData为空了....
怎么回事?
如果把 <forms defaultUrl="default.aspx" loginUrl="default.aspx" domain="" path="/" name=".TESTDEMO" ></forms>中的domain设为"/"就行,但这样一来,注销就失效了,这个地方应该如何设定值?