0

私には3つの役割があります:サイトRegistered Users, Approved Users, and Admins.
へのアクセスはApproved usersAdmins.

FilterConfig匿名アクセスを制限するために、次 のようにフィルターを追加しました。

filters.Add(new System.Web.Mvc.AuthorizeAttribute());   

今、登録ユーザーのために、私は彼らに次のように言っているランディングページにリダイレクトして欲しいです:

管理者の1人に連絡して承認してください。

それを行う正しい方法が何であるかはよくわかりません。
各コントローラーにauthorize属性を設定できますが、それが良い方法かどうかはわかりません。
また、役割に基づいてデフォルトのリダイレクトアクションをどこに指定すべきかわかりません。
でデフォルトのリダイレクトアクションを指定できることは知っていRouteConfig.csますが、役割を指定する場所がわかりません。

4

2 に答える 2

0

[Authorize]これには属性 を使用できるはずです。

制限されたページのコントローラまたはアクションは で装飾され[Authorize(Roles="Approved User,Admin")]、登録ユーザーの「ランディング ページ」は[Authorize(Roles="Registered User,Approved User,Admin")]で、ログオン アクションはで装飾されます[AllowAnonymous]

ユーザーが承認されていない場合、ユーザーは にリダイレクトされAccount/Loginます。このアクションでは、すでにログインしている「登録済みユーザー」をランディング ページにリダイレクトするロジックを構築する必要があります。その他のユーザーには、標準のログイン ページが表示されるだけです。

編集

「登録ユーザー」をログイン ページからランディング ページにリダイレクトするロジックは、次のようになります。

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{

    if (User.Identity.IsAuthenticated && Roles.IsUserInRole("Registered User"))
        return RedirectToAction("LandingPage");

    ViewBag.ReturnUrl = returnUrl;
    return View();
}
于 2013-03-10T22:39:35.697 に答える