0

ASP.NET Web アプリケーション プロジェクトに、"Admin" フォルダーと "User" フォルダーの 2 つのフォルダーがあります。Admin フォルダの下には "Admin.aspx" ページがあり、User フォルダの下には "User.aspx" ページがあります。Account フォルダの下に「Login.aspx」という別のページがあります。このログイン ページでは、ツールボックスの組み込みのログイン コントロールを使用しました。フィールドに指定された ID とパスワードに基づいて、対応する Web ページを呼び出す必要があります。たとえば、ユーザー名を「admin」、パスワードを「password」(基本的には管理者ユーザー)として入力すると、Admin.aspx ページが読み込まれます。一方、ユーザー名が「mike」、パスワードが「mike123」の場合(基本的に一般ユーザー)、アプリケーションは User.aspx ページをロードする必要があります。「ASP.NET 構成」ウィザードを使用して、「Admin」および「User」フォルダーに必要なアクセス ルールを作成済みです。ここでの問題は、入力された ID とパスワードに基づいて、対応する aspx ページをマッピングすることです。

4

2 に答える 2

1

あなたの質問は少し曖昧です。標準の SqlMembership プロバイダーとフォーム認証を使用していると仮定しています。

Web サイト管理ツールを使用してログインを管理すると、認証メカニズムが提供されます。ユーザー ロールを構成して使用し、Web サイト機能へのアクセスを定義することをお勧めします。

ロールに応じて特定のページにリダイレクトするには、次のようにします。 Login コントロールの LoggedIn イベントを処理します。

protected void LoginControl_LoggedIn(object sender, EventArgs e)
{
    try
    {

       if (HttpContext.Current.User.IsInRole("Site Admin"))
       {
          Response.Redirect("~/Admin/Admin.aspx");
       }
       else if  (HttpContext.Current.User.IsInRole("User")) 
       {
          Response.Redirect("~/User/User.aspx");
       }
    catch (Exception ex)
    {
       Debug.WriteLine("Exception in d: " + ex.Message);
       throw;
    }
}

また、web.config を使用して、サイトのセキュリティで保護されたセクションの外にある Login.aspx ページへのアクセスを提供する必要があります。

<authentication mode="Forms">
  <forms name="MyApplication" loginUrl="~/Account/Login.aspx" timeout="60">
  </forms>
</authentication>

これは、実装できる数多くのソリューションの 1 つにすぎません。これを行うのに役立つ多くのリソースがオンラインにあります。

于 2012-05-11T23:55:57.657 に答える
0
protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        String[] users = Roles.GetRolesForUser(Login1.UserName);
        if (users.Contains("admin"))
        {
            Response.Redirect("~/Admin/Admin.aspx");
        }
        else if (users.Contains("users"))
        {
            Response.Redirect("~/Secure/User.aspx");
        }
    }
于 2012-05-11T23:42:30.787 に答える