ユーザーがログインしていないか、管理者でない場合、コントローラのメソッドへのアクセスを防ぐ方法を解明しようとしています。私は、ユーザーと彼の状態(ログイン、管理者など)を追跡する変数を持つクラスを持っています。特定の変数に特定の値がある場合、MVCはコントローラメソッドへのアクセスを禁止します
これはValidationAttribute
を使用して行うことができると思います。私はこのテクニックを使用していないので、おそらく何か間違っています。この機能は、すでにある
AccountController.CS
[AdminUserValidation]
public ActionResult Index()
{
var account1 = account.GetAccountsWithType();
return View(account1.ToList());
}
AdminUserValidation.CS
public class AdminUserValidationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (UserSession.Current.IsAdmin)
{
//Allow access to the controller's method
}
else
{
//Prevent access to the controller's method and show error page (bad request/forbidden)
}
base.OnActionExecuting(filterContext);
}
}
をAuthorizeAttributeはここにあなたの友人になります。 – Steve
ビルドインUserManagerを使用したくないのは、ビルドインデータベース内にユーザーを格納する必要があるからです。私は自分のデータベースをユーザーとその役割に使用します。 'UserSession.Current .IsAdmin'変数を使用してこれを検証できる方法はありますか? – DaGrooveNL
私はまた独自のテーブル構造を使用し、カスタムのメンバーシップ/ロールプロバイダを構築しました。 – Steve