私のウェブサイトには、顧客、オペレーター、エンジニア、管理者の 4 つの異なるモジュールがあります。
その時点でログイン ボタンをクリックすると、それが顧客の場合、ページは customer.aspx にリダイレクトされます。
エンジニアがログインすると、ページはengineer.aspxなどにリダイレクトされます。
どうすればこれを達成できますか?
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");
}
ユーザーのユーザー名とパスワードを保存したテーブルに、もう 1 つの列を追加する必要があります。新しい列では、ユーザーの役割を保存できます。ユーザーが正しいユーザー名とパスワードを入力すると、自分の役割を取得し、役割に従ってユーザーをリダイレクトできます。
例えば:
顧客を取得すると、ユーザーを customer.aspx にリダイレクトできます
他の役割についても同じチェックを行います。