0

私のウェブサイトには、顧客、オペレーター、エンジニア、管理者の 4 つの異なるモジュールがあります。

その時点でログイン ボタンをクリックすると、それが顧客の場合、ページは customer.aspx にリダイレクトされます。

エンジニアがログインすると、ページはengineer.aspxなどにリダイレクトされます。

どうすればこれを達成できますか?

4

3 に答える 3

1

WebForms で「プレーンな」ASP.NET を使用していると思います。この場合 (これもまた思いますが)、次のように、ページにログイン コントロールがあります。

<asp:login id="ctrlLogin" runat="server"></asp:login>

そのコントロールは、使用できるいくつかのイベントを公開します。そのうちの 1 つは認証後に発生します。ログイン コントロールを次のように設定します。

<asp:login id="ctrlLogin" runat="server" onloggedin="OnLoggedIn">
</asp:login>

C# コードにメソッドを追加しますOnLoggedIn

protected void OnLoggedIn(object sender, EventArgs e)
{
}

への単純な呼び出しを使用して、適切なページにリダイレクトできますResponse.Redirect()。最後の質問は、ユーザーの「ジョブ」を取得する方法です。ロールで ASP.NET 認証を使用している場合は、ユーザーがそのロール (顧客、オペレーター、エンジニア、管理者) に属するように設定できます。実際には、ユーザーは複数の役割を持つことができるため、関心のある役割を検索する必要がある場合があります。簡単で汚い解決策は、次のような関数を持つことです。

private void RedirectToProperPage(params string[] roles)
{
    foreach (string role in roles)
    {
        if (Roles.IsUserInRole(role))
            Response.Redirect(String.Format("~/{0}.aspx", role));
    }
}

あなたOnLoggedInMethodは簡単にこれを行うことができます:

protected void OnLoggedIn(object sender, EventArgs e)
{
    RedirectToProperPage("Admin", "Operator", "Engineer", "Customer");
}
于 2013-02-22T14:05:56.077 に答える
0

Loginコントロールを使用している場合LoggedInは、ユーザーがログインした後にカスタム ロジックを実行するために使用できるイベントがあります。

于 2013-02-22T13:53:56.267 に答える
-1

ユーザーのユーザー名とパスワードを保存したテーブルに、もう 1 つの列を追加する必要があります。新しい列では、ユーザーの役割を保存できます。ユーザーが正しいユーザー名とパスワードを入力すると、自分の役割を取得し、役割に従ってユーザーをリダイレクトできます。

例えば:

顧客を取得すると、ユーザーを customer.aspx にリダイレクトできます

他の役割についても同じチェックを行います。

于 2013-02-22T13:57:13.353 に答える