2011-08-28 42 views
31

我们知道表单身份验证Cookie已加密。所以如何从我的代码背后读取表单身份验证cookie内容。从后面的asp.net代码读取表单身份验证Cookie

if (Request.Cookies[".ASPXAUTH"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie(".ASPXAUTH"); 
} 
+0

可能重复http://stackoverflow.com/questions/2921387/get-the-aspxauth-cookie-value-programatically提供的解密方法访问票 – xsari3x

回答

72

您可以通过FormsAuthentication

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 

string cookiePath = ticket.CookiePath; 
DateTime expiration = ticket.Expiration; 
bool expired = ticket.Expired; 
bool isPersistent = ticket.IsPersistent; 
DateTime issueDate = ticket.IssueDate; 
string name = ticket.Name; 
string userData = ticket.UserData; 
int version = ticket.Version; 
+0

如何从票证中提取数据....假设我创建如下的一种身份验证cookie。的FormsAuthenticationTicket票=新的FormsAuthenticationTicket( 1, 用户名, DateTime.Now, DateTime.Now.AddMinutes(30), isPersistent, 的UserData, FormsAuthentication.FormsCookiePath);那么解密后如何从票证中获得上述数据? plzz指导我.......谢谢 – Thomas

+0

解密之后,您可以直接在票证上访问属性。这显示属性列表:http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx。我用一个访问票据数据的例子更新了答案。 – RyanW

+0

只是一个错字:ticket.IsPersistant应ticket.IsPersistent – Raghav