我希望将它与 MvcSiteMapProvider 一起使用来隐藏/显示菜单项,而不是在我的 mvc.sitemap 文件中加倍和定义角色。
我已经浏览了 2.0alpha1 的源代码,但似乎无法弄清楚如何执行以下操作:
bool hasAccess = SecurityConfiguration.Current.HasAccess(controller, action, area)
谁能指出我正确的方向?
谢谢
我希望将它与 MvcSiteMapProvider 一起使用来隐藏/显示菜单项,而不是在我的 mvc.sitemap 文件中加倍和定义角色。
我已经浏览了 2.0alpha1 的源代码,但似乎无法弄清楚如何执行以下操作:
bool hasAccess = SecurityConfiguration.Current.HasAccess(controller, action, area)
谁能指出我正确的方向?
谢谢
在实际的 github 项目页面上,我能够在kristoffer-ahl的帮助下解决这个问题
这是解决方案
public static bool ActionIsAllowedForUser(string area, string controllerName, string actionName)
{
var configuration = SecurityConfiguration.Current;
string fullControllerName = string.Format("Web.Controllers.{0}Controller", controllerName);
if (!string.IsNullOrEmpty(area))
{
fullControllerName = string.Format("Web.Areas.{0}.Controllers.{1}Controller", area, controllerName);
}
var policyContainer = configuration.PolicyContainers.GetContainerFor(fullControllerName, actionName);
if (policyContainer != null)
{
var context = SecurityContext.Current;
var results = policyContainer.EnforcePolicies(context);
return results.All(x => x.ViolationOccured == false);
}
return true;
}