我在控制器中有一个返回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
答案 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