从_layout页面调用bool返回类型的控制器方法

时间:2017-07-18 18:34:37

标签: c# html asp.net-mvc razor

我在控制器中有一个返回bool的方法,我想使用_Layout.cshtml中的值并根据返回的值,想重定向到另一个动作

        [HttpGet]
        public bool CheckPagePermission(PagePermissionDto pagePermission)
        {
            var claimsIdentity = System.Web.HttpContext.Current.User.Identity as ClaimsIdentity;
            var userName = claimsIdentity.FindFirst("email")?.Value;
            pagePermission.UserName = userName;

            bool authorizedUser = _uow.PagePermissions.CheckPagePermission(pagePermission);
            return authorizedUser;
          }

现在,我想查看上面的值并重定向到错误页面,如果从head标签中的_Layout.cshtml显示为false

1 个答案:

答案 0 :(得分:0)

我有点困惑,因为您似乎在混合声明和传统授权技术。我认为你可以使用ClaimsTranformer并继承ClaimsAuthorizationManager。但如果这是不同的东西,你想要一些简单的东西,那么也许你想要一个自定义授权属性

你可以做这样的事情

public class MyCustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var claimsIdentity = System.Web.HttpContext.Current.User.Identity as ClaimsIdentity;
        var userName = claimsIdentity.FindFirst("email")?.Value;

        return _uow.PagePermissions.CheckPagePermission(new pagePermission { /*whatever you are passing here.*/ });
    }
}

精彩信息here