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"><% Page ... %>この行を追加した後、ホームページで、IDEは、ランタイムエラーが発生するという警告を最初の行に表示しました。

使用HttpContext.Current.User.Identity.Nameしましたが、動作しません。プロジェクトのさまざまな部分で認証されたユーザーの名前を取得しようとしています。したがって、必要に応じてロジックを変更できます。どんな助けでもありがたいです。

編集:Windows 7(64ビット)でVisual Web Devepoler2008Expressを使用しています。

EDIT2:問題はどういうわけか解決しました。答えは以下の通りです。どのように?なんで?プログラムで行うことはできませんか?わからない、理由を知りたい。

4

1 に答える 1

0

私が見つけた解決策は次のとおりです。まず、web.configファイル内の認証タグを削除しました。次に、ソリューション エクスプローラー ウィンドウでPropertiesアイコンをクリックすると、ASP.NET の構成 Web ページが開きました。次に、 をクリックしSecurity tab->Set up authenticationました。インターネット接続のオプションを選択したので、どこからでも認証されたユーザー名に到達できますPage.User.Identity.Name

于 2012-04-04T07:48:42.740 に答える