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

问题描述 投票:-2回答:1

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

Install-Package Microsoft.AspNet.WebApi.HelpPage

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

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

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

还要在[Authorize]的头上添加HelpController.cs

仍然,任何人都可以去我的:www.mydomain/help并获得整个列表。

asp.net-web-api authorize
1个回答
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);
            }
        }
    }
}

将新Action添加到HomeController:

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

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

在帮助索引控制器上方添加[AuthorizeEx(Roles =“admin”)]。

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

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

完!

© www.soinside.com 2019 - 2024. All rights reserved.