0

我正在使用 FluentSecurity 配置授权的 ASP.NET MVC 网站。现在我们需要一个自定义的 ActionLink Helper,它仅在当前用户有权访问目标操作时显示。

我想知道是否有一种方法可以动态地从 FluentSecurity 配置(例如使用 SecurityConfiguration 类)中了解当前登录的用户是否有权访问给定她的姓名(字符串)和她的控制器名称(字符串)的操作。我花了很多时间查看 FluentSecurity https://github.com/kristofferahl/FluentSecurity的源代码,但没有成功。

例如:

public bool HasAccess(string controllerName, string actionName) {
      //code I'm looking for goes here
}
4

1 回答 1

0

最后,我会回答自己,这可能会帮助另一个人。

我只是模拟 HandleSecurityAttribute 类的 OnAuthorization 方法。此代码运行良好:

public static bool HasAccess(string fullControllerName, string actionName)
    {
        ISecurityContext contx = SecurityContext.Current;
        contx.Data.RouteValues = new RouteValueDictionary();

        var handler = new SecurityHandler();

        try
        {
            var result = handler.HandleSecurityFor(fullControllerName, actionName, contx);
            return (result == null);
        } catch (PolicyViolationException)
        {
            return false;
        }

    }
于 2017-12-25T11:17:33.690 回答