我有這個問題。當用戶登錄時,我使用formsauthanticationticket創建cookie:asp.net mvc3 Cookie過期後重定向用戶
var formAuthTicket = new FormsAuthenticationTicket(1, model.UserName, DateTime.Now, DateTime.Now.AddMinutes(1), false, "");
var encryptedFormAuthTicket = FormsAuthentication.Encrypt(formAuthTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedFormAuthTicket);
Response.Cookies.Add(cookie);
return RedirectToAction("Index", "Home");
現在。在PreRequestHandlerExecute事件我檢查,如果用戶通過身份驗證/ cookie存在。
var cookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
var formAuthTicket = FormsAuthentication.Decrypt(cookie.Value);
var newFormAuthTicket = new FormsAuthenticationTicket(formAuthTicket.Version, formAuthTicket.Name,
formAuthTicket.IssueDate,
DateTime.Now.AddMinutes(1),
formAuthTicket.IsPersistent,
formAuthTicket.UserData,
FormsAuthentication.FormsCookiePath);
cookie.Value = FormsAuthentication.Encrypt(newFormAuthTicket);
context.Response.Cookies.Set(cookie);
}
但是,當餅乾不存在/過期我想將用戶重定向到登錄頁面,當他點擊某個環節。任何想法? 感謝
編輯
因爲我不能使用授權的屬性。我知道這件事。我在程序集中有httpmodule,它在web項目中被引用。在httpmodule中我有Init方法,我在這裏初始化PreRequestHandlerExecute()事件。如果我檢查用戶的身份驗證。如果我在「else」中使用類似這樣的內容 - > Response.Redirect(url),會發生循環重定向,這是錯誤的。 10分鐘後沒有任何請求,用戶點擊一些鏈接,他將被重定向到登錄頁面 - >這是我的問題,我無法解決。
喬治是對的。您似乎要求的是表單身份驗證的默認行爲。 – 2012-08-10 14:39:38
是的,我知道這種方法。但將來,這將是很多工作。 – Bxx 2012-08-10 15:50:07