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