我正在使用帮助页面“映射”我的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
并获取整个列表。
答案 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()
当用户不是管理员时 - 将重定向到未经授权的页面。
完成!