我有一个mvc4内联网网站,我正在致力于这个网站的前端,只有少数AD组可以访问,但我也使用mvc4的web功能,我需要开放给所有用户,甚至匿名用户。我尝试过使用Web.config,但这会阻止所有不属于其中一个组的用户。
如何在保持API打开的同时保护前端的安全?
更新:
我只是想,我想避免用像[Authorize]这样的属性来标记每个方法
发布于 2013-03-04 03:27:39
弄明白了。
我只是应用了一个筛选器来检查每个控制器的名称空间。由于我的所有API控制器都在HSServer.Controllers.Api中,所有的web控制器都在HSServer.Controllers.Web中,所以在我的FilterConfig.cs中,这段代码工作起来很有魅力。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new FrontendAuthorize());
filters.Add(new HandleErrorAttribute());
}
}
public class FrontendAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
try
{
if (!filterContext.Controller.GetType().Namespace.StartsWith("HSServer.Controllers.Api"))
base.OnAuthorization(filterContext);
}
catch (NullReferenceException)
{
base.OnAuthorization(filterContext);
}
}
}https://stackoverflow.com/questions/15191117
复制相似问题