ASP .NET MVC アプリケーション全体で認証を要求する方法 質問する

ASP .NET MVC アプリケーション全体で認証を要求する方法 質問する

ログインを有効にするアクション以外のすべてのアクションが、ログインしていないユーザーに対して制限外となるアプリケーションを作成します。

[Authorize]各クラスの見出しの前に注釈を追加する必要がありますか? 次のようになります:

namespace WebApplication2.Controllers {
[Authorize]
    public class HomeController : Controller {




        public ActionResult Index() {
            return View();
        }

        public ActionResult About() {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact() {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

または、これにはショートカットがありますか? 特定のコントローラー内の 1 つのアクションのみのルールを変更したい場合はどうすればよいでしょうか?

ベストアンサー1

最も簡単な方法は、Authorizeフィルター設定に属性を追加して、それをすべてのコントローラーに適用することです。

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());

        //Add this line
        filters.Add(new AuthorizeAttribute());
    }
}

もう 1 つの方法は、すべてのコントローラーを基本クラスから継承することです。これは、すべてのコントローラーで使用できる共有コードがほぼ常に存在するため、私がよく行うことです。

[Authorize]
public abstract class BaseSecuredController : Controller
{
    //Various methods can go here
}

そして、 から継承する代わりにController、すべてのコントローラがこの新しいクラスを継承する必要があります。

public class MySecureController : BaseSecuredController
{
}

注記:AllowAnonymousログインしていないユーザーがアクセスできるようにする必要がある場合は、属性を追加することを忘れないでください。

おすすめ記事