MVC5身份验证:在每个控制器或基本控制器上授权属性

JTe*_*ech 6 authorize-attribute owin asp.net-mvc-5 asp.net-identity

我一直在研究保护MVC 5应用程序的最佳方法.

我们有一个带有许多WebAPI控制器的Web.csproj以及一个有两个区域的MVC站点 - 一个用于Admin,然后用于面向公众的网站.

阅读本文说明基本控制器是最好的方法,我决定采用这种方法.

但是,我个人对使用基本控制器并不行(对于我的一些推理,请参阅此stackoverflow答案).

因此,鉴于我正在使用MVC 5(ASP.Net身份和OWIN身份验证) - 任何人都可以了解每种方法的优缺点吗?

Rud*_*udi 20

MVC 5中的当前做法是将其AuthorizeAttribute作为全局过滤器应用,并打开单独的动作/控制器AllowAnonymousAttribute

所以在App_Start\FilterConfig.cs中添加以下行:

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        ... existing filters

        // use the [AllowAnonymous] attribute to open up individual Actions/Controllers
        filters.Add(new System.Web.Mvc.AuthorizeAttribute());
        filters.Add(new RequireHttpsAttribute());
    }
Run Code Online (Sandbox Code Playgroud)

注意:为了好的衡量,我还添加了RequireHttpsAttribute,因为ASP.Net Identity中的每个经过身份验证的请求都带有auth cookie,如果通过常规HTTP传输,它很容易受到Man In The Middle攻击.