我有一個登錄頁面,它調用以下事件處理程序:獲得認證的用戶(而非計算機名稱)的信息
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (Login1.UserName == "abc" && Login1.Password == "1234"){
if (Request["ReturnUrl"] != null)
{
FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx");
FormsAuthentication.RedirectFromLoginPage(userName, Login1.RememberMeSet);
}
else
{
FormsAuthentication.SetAuthCookie(userName, false, "AdminPart/AdminHome.aspx");
Response.Redirect("HomePage.aspx");
}
}
}
我的web.config文件是這樣的:
<system.web>
<authorization>
<deny users="?" />
</authorization>
現在,我試圖在我的HomePage.aspx.cs中獲得經過身份驗證的用戶的用戶名,但User.Identity.Name
返回我的計算機的名稱。我想下面的代碼添加到配置文件:
<authentication mode="Forms">
<forms loginUrl="~/login.aspx" timeout="10" protection="All"></forms>
</authentication>
但一個問題行<authentication mode="Forms">
再次發生。在我的HomePage中添加了這一行後,IDE給了我一個從<% Page ... %>
開始的第一行的警告,說明會出現運行時錯誤。我使用HttpContext.Current.User.Identity.Name
,也不起作用。 我只是試圖在項目的不同部分獲取經過身份驗證的用戶的名稱。所以我可以改變邏輯,如果我必須。 任何幫助將不勝感激。
編輯:我在Windows 7(64位)上使用Visual Web Devepoler 2008 Express。
EDIT2:問題解決莫名其妙。答案如下。怎麼樣?爲什麼?難道它不能通過計劃完成嗎?我不知道,我想知道爲什麼。
如果在IIS中啓用了匿名身份驗證,則User.Identity.Name可能爲空。這是什麼'User.Identity.IsAuthenticated'的結果? – 2012-04-04 00:14:38
這是真的。但是發生了一些非常尷尬的事情,我現在正在更新這篇文章。 – mtyurt 2012-04-04 00:37:13
由於我的信譽低,我有2個小時來回答我的問題。直到我編輯了這個問題。 – mtyurt 2012-04-04 05:29:15