ASP.NET MVC控制器授权最佳实践

时间:2016-10-27 15:17:44

标签: c# asp.net asp.net-mvc

以下哪种解决方案被视为控制器授权的最佳做法(请注意RECORD_OPTION_ATTRIBUTESoption_attributes属性的位置)。这些方法中的任何一种都有任何优点/缺点,或者这只是一个没有实际意义的点吗?

解决方案1 ​​

NULL

解决方案2

AllowAnonymous

2 个答案:

答案 0 :(得分:1)

如果您要在同一个控制器中混合使用匿名和经过身份验证的控制器操作,我会选择#2。如果您忘记添加[AllowAnonymous],您会很快注意到它。

另一方面,如果您忘记在#1中添加[Authorize],则可能会向公众开放不应该执行的控制器操作。

话虽如此,我将网站的授权部分与不同控制器(或网站足够大的区域)中的匿名部分分开。在我看来,将两者混合在同一个控制器中然后依赖开发人员记住在规则例外的方法上放置一个属性,从长远来看,只是要求麻烦。

答案 1 :(得分:0)

我同意克雷格的观点。我通常会将以下代码添加到我的全局

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

        //Add this so all controllers need Authorization
        filters.Add(new AuthorizeAttribute());
    }
}

确保我的所有控制器都需要授权