我有一个mvc4内部网站,我正在研究它有一个只有少数AD组可以访问的Web前端,但我也使用mvc4的web API功能,我需要对所有人开放用户,甚至是匿名用户。我尝试过使用Web.config,但是阻止了不在其中一个组中的所有用户。
如何在保持API开放的同时保护前端?
更新
我只是想,我想避免使用属性标记每个方法
比如[Authorize]
答案 0 :(得分:0)
想出来。
我只是应用了一个检查每个控制器命名空间的过滤器。由于我的所有API控制器都在HSServer.Controllers.Api
,并且所有网络控制器都在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);
}
}
}