FilterConfig で、グローバルな承認属性を定義します。そうすることで、デフォルトですべてのコントローラーへの匿名アクセスを禁止します - ユーザーがログインする必要があるようにします.
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new RedirectToHomeOnCryptographicExceptionAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}
}
次に、コントローラ クラスを作成します。1 つのメソッドを管理者ロールを持つユーザーに制限したい。
public class FilesController : Controller
{
[Authorize(Roles="Admin")]
public ActionResult TestAccess()
{
if (!User.IsInRole("Admin"))
return Content("Authorization not working as expected");
return Content("hello");
}
}
管理者以外のユーザーでログインして /Files/TestAccess を開くと、「Authorization not working as expected」というメッセージが表示されます。奇妙なことに、メソッドの [Authorize(...)] が管理者のみを許可することを期待していました。
管理者以外がコントローラー アクションにアクセスできないようにするにはどうすればよいですか?
ログインとユーザー管理に Brock Allen の MembershipReboot を使用しています。