0

私が取り組んでいるmvc4イントラネットWebサイトには、少数のADグループのみがアクセスできるWebフロントエンドがありますが、mvc4のWeb API機能も使用しているため、すべてのユーザーに公開する必要があります。匿名のもの。Web.configを使用してみましたが、グループの1つに属していないすべてのユーザーがブロックされます。

APIを開いたままフロントエンドを保護するにはどうすればよいですか?

アップデート:

各メソッドに次のような属性のタグを付けないようにしたいと思いました。[Authorize]

4

1 に答える 1

0

理解した。

各コントローラーの名前空間をチェックするフィルターを適用しただけです。すべての 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);
        }
    }
}
于 2013-03-04T03:27:39.557 に答える