我想创建一个静态分析代码规则,以便任何控制器的方法都必须继承AllowAnonymous或Authorize,或者具有显式的AllowAnonymous OR Authorize属性 - 以便每个操作都以某种方式明确地解决。
任何有关如何执行此操作的指导 - 或者如果您看到更好的解决方案 - 将不胜感激。
答案 0 :(得分:1)
建议的方法是在全局注册AuthorizeAttribute
。这实际上意味着在没有登录的情况下,默认情况下不能访问任何操作方法。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// Enable white-list security
filters.Add(new AuthorizeAttribute());
filters.Add(new HandleErrorAttribute());
}
}
在Global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
// Register global filters
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
这将有效启用白名单'安全性,这意味着您必须使用公共应该看到的方法(例如主页)上的AllowAnonymous
属性明确选择退出安全方案。
public class HomeController : Controller
{
[AllowAnonymous]
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
}
请注意,您还可以在控制器级别选择退出白名单安全性,默认情况下会使HomeController的所有方法都是匿名的。
[AllowAnonymous]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
}