如何防止访问asp web api 2.x中的帮助页面服务?

时间:2018-03-03 18:51:15

标签: asp.net-web-api authorize

我正在使用帮助页面“映射”我的asp.net web api服务:

Install-Package Microsoft.AspNet.WebApi.HelpPage

如何防止未经授权的用户访问我的所有网络服务?

甚至在Web.Config中使用(在Areas / HelpPage / Views中):

<authorization>
  <deny users="*" />
</authorization>

同时在[Authorize]

的头部添加HelpController.cs

但是,任何人都可以访问我的www.mydomain/help并获取整个列表。

1 个答案:

答案 0 :(得分:0)

最后:

在Areas / HelpPage / named Filter中创建新文件夹。在文件夹内添加此类:

public class AuthorizeEx
{
    public class AuthorizeExAttribute : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(
            AuthorizationContext filterContext)
        {
            var virtualPathData = RouteTable.Routes.GetVirtualPath( filterContext.RequestContext, new RouteValueDictionary() {
                { "action", "UnAuth" }, { "controller", "Help" } });
            if (virtualPathData != null)
            {
                var url = virtualPathData.VirtualPath;
                filterContext.HttpContext.Response.Redirect(url);
            }
        }
    }
}

向HomeController添加新动作:

public ActionResult UnAuth()
    {
        return View("UnAuth");
    }

添加新视图chtml页面以重定向到

在帮助索引控制器上方添加[AuthorizeEx(Roles =&#34; admin&#34;)]。

[AuthorizeEx(Roles = "admin")]
    public ActionResult Index()

当用户不是管理员时 - 将重定向到未经授权的页面。

完成!