and*_*dko 3 c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-filters
我正在使用自定义过滤器检查特定Action的用户访问权限,我有一个名为Admin的区域.当过滤器重定向未授权用户时,其重定向内部区域但不重定向到路径目录中的视图.
例如,当我访问http:// localhost/admin/roles时,我希望未经授权的用户将被重新安装到http:// localhost/authorized但不会被重新安装到http:// localhost/admin/authorized.
这是我如何使用过滤器:
public override void OnAuthorization(AuthorizationContext filterContext)
{
DigitalHubOnlineStoreEntities db = new DigitalHubOnlineStoreEntities();
RbacUser requestingUser = new RbacUser();
var controllerid = RbacUser.GetControllerId(filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
var actionid = RbacUser.GetActionId(filterContext.ActionDescriptor.ActionName, controllerid);
if (!requestingUser.GetUserPermission(HttpContext.Current.User.Identity.Name, actionid, controllerid))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "Index" }, { "controller", "Unauthorized" } });
}
}
Run Code Online (Sandbox Code Playgroud)
hai*_*770 10
您需要Area使用en空字符串指定:
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{
{ "action", "Index" },
{ "controller", "Unauthorized" },
{ "Area", String.Empty }
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3298 次 |
| 最近记录: |