ログインを有効にするアクション以外のすべてのアクションが、ログインしていないユーザーに対して制限外となるアプリケーションを作成します。
[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
ログインしていないユーザーがアクセスできるようにする必要がある場合は、属性を追加することを忘れないでください。