我在測試中使用Form Authentication
。並且還有一些測試用戶名。但是爲特定名稱找到了一個奇怪的問題。這是所有的測試名稱,只有一個名爲amybeyond
可以在測試中起作用。爲什麼FormsAuthentication.SetAuthCookie不起作用在IE
請幫我在我的測試中查看我的代碼。
LoginTest.aspx(這是爲用戶名和密碼輸入一個登錄表單。)
public partial class LoginTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//after succeed validating user. then redirect to LoginSuccess.aspx page.
bool bValidate=Membership.ValidateUser("amybeyond", "11111111");
if (bValidate)
{
FormsAuthentication.SetAuthCookie("AmyBeyond", false);
Response.Redirect("LoginSuccess.aspx");
}
}
}
LoginSuccess.aspx(在此頁,只需簡單地測試是否當前的請求被重定向之後認證。)
public partial class LoginSuccess : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//the HttpContext.Current.Request.IsAuthenticated always false in the IE.
if (HttpContext.Current.Request.IsAuthenticated)
{
Response.Write("ok, you login successfully.");
}
}
}
我相信Membership.ValidateUser
成功執行和return true
。問題是它不能知道成功重定向後的身份驗證狀態。
我不知道我是否錯過了什麼或做錯了什麼。如果有 。請幫忙告訴我。謝謝。
新增
我讀的FormsAuthentication.SetAuthCookie
的源代碼。並在Web.config
的Forms
元素中添加cookieless="UseCookies"
。希望確保將cookie添加到Response
(這由源代碼HttpContext.Current.Response.Cookies.Add(cookie)
完成)。仍然不起作用。
public static void SetAuthCookie(string userName, bool createPersistentCookie, string strCookiePath)
{
Initialize();
HttpContext current = HttpContext.Current;
if (!current.Request.IsSecureConnection && RequireSSL)
{
throw new HttpException(SR.GetString("Connection_not_secure_creating_secure_cookie"));
}
bool flag = CookielessHelperClass.UseCookieless(current, false, CookieMode);
HttpCookie cookie = GetAuthCookie(userName, createPersistentCookie, flag ? "/" : strCookiePath, !flag);
if (!flag)
{
HttpContext.Current.Response.Cookies.Add(cookie);
current.CookielessHelper.SetCookieValue('F', null);
}
else
{
current.CookielessHelper.SetCookieValue('F', cookie.Value);
}
}
新增
在HTTP捕獲下面詳細示出。在LoginTest.aspx
有一個名爲FwLoginCookie
的cookie,重定向到LoginSuccess.aspx
後,此cookie將丟失。請幫忙查看它。
對於單個用戶?聽起來像我的餅乾被禁用... –
是的。僅供單個用戶使用。問題是當我通過IE的IE開發人員工具檢查詳細信息時,在重定向頁面(LoginSuccess.aspx)中不存在用於成功驗證的cookie。謝謝。 –
而讓我困惑的是其他用戶的名字沒有這個問題! :P –