2012-04-03 45 views
2

我有一個登錄頁面,它調用以下事件處理程序:獲得認證的用戶(而非計算機名稱)的信息

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:問題解決莫名其妙。答案如下。怎麼樣?爲什麼?難道它不能通過計劃完成嗎?我不知道,我想知道爲什麼。

+0

如果在IIS中啓用了匿名身份驗證,則User.Identity.Name可能爲空。這是什麼'User.Identity.IsAuthenticated'的結果? – 2012-04-04 00:14:38

+0

這是真的。但是發生了一些非常尷尬的事情,我現在正在更新這篇文章。 – mtyurt 2012-04-04 00:37:13

+0

由於我的信譽低,我有2個小時來回答我的問題。直到我編輯了這個問題。 – mtyurt 2012-04-04 05:29:15

回答

0

以下是我找到的解決方案:首先,我刪除了web.config文件中的授權標籤。然後在解決方案資源管理器窗口中,我單擊了Properties圖標並打開了ASP.NET的配置網頁。然後我點擊Security tab->Set up authentication。我選擇了與Internet連接的選項,現在我可以在任何地方通過Page.User.Identity.Name達到經過身份驗證的用戶名。

相關問題