LoginPage.aspx: -自定義驗證模塊繼承IHttpModule的問題
protected void Button1_Click(object sender, EventArgs e)
{
Context.Items["Username"] = txtUserId.Text;
Context.Items["Password"] = txtPassword.Text;
//
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, Context.Items["Username"].ToString(), DateTime.Now, DateTime.Now.AddMinutes(10), true, "users", FormsAuthentication.FormsCookiePath);
// Encrypt the cookie using the machine key for secure transport
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName, // Name of auth cookie
hash); // Hashed ticket
// Set the cookie's expiration time to the tickets expiration time
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);
Response.Redirect("Default.aspx");
}
Global.asax文件: -
void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
FormsIdentity id =
(FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;
// Get the stored user-data, in this case, our roles
string userData = ticket.UserData;
string[] roles = userData.Split(',');
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
Response.Write(HttpContext.Current.User.Identity.Name);
Response.Redirect("Default.aspx");
}
}
}
}
我收到以下錯誤
This webpage has a redirect loop.
The webpage at http://localhost:1067/Default.aspx has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.
爲什麼我得到重定向錯誤? – 2011-02-04 07:22:15
`Application_AuthenticateRequest`在每個*請求*上觸發,因此當您登錄時,您會按預期發送到Default.aspx。但是,在該頁面呈現之前,將調用此代碼並將瀏覽器重定向到Default.aspx。但是在渲染這段代碼之前,它再一次將瀏覽器重定向到Default.aspx。重複這個過程,直到檢測到(如果你幸運的話)無限重定向。 – 2011-02-04 20:49:36
另外,請不要更改您的整個帖子。您可以通過修改來修改它,但是您已經從IHttpModule切換到使用global.asax事件,這些事件是分開的。如果你走向不同的方向,請創建一個新問題,並參考舊的相關內容。 – 2011-02-04 20:52:14