当用户没有权限时如何重定向到特定页面?

How to redirect to special page when user don't have permision?

我注册了一个用户,然后将其设置为停用。我想在用户填写表格时激活用户。

  await _userManager.AddClaimAsync(user.Id,new Claim("DeActive", "1"));

注册后将用户重定向到管理区域,我想将用户重定向到每个 link 菜单中的特殊页面,直到用户填写特殊表格。

如何为该区域的所有控制器操作设置重定向页面?

public class MyAuthorizeAttribute: AuthorizeAttribute
{
 protected override bool AuthorizeCore(HttpContextBase httpContext)
 {
    var authorized = base.AuthorizeCore(httpContext);
    if (!authorized)
    {
        // The user is not authorized => no need to go any further
        return false;
    }

    // We have an authenticated user, let's get his username
    string authenticatedUser = httpContext.User.Identity.Name;

    // and check if he has completed his profile
    if (!this.IsProfileCompleted(authenticatedUser))
    {
        // we store some key into the current HttpContext so that 
        // the HandleUnauthorizedRequest method would know whether it
        // should redirect to the Login or CompleteProfile page
        httpContext.Items["redirectToCompleteProfile"] = true;
        return false;
    }

    return true;
 }

 protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
 {
    if (filterContext.HttpContext.Items.Contains("redirectToCompleteProfile"))
    {
        var routeValues = new RouteValueDictionary(new
        {
            controller = "someController",
            action = "someAction",
        });
        filterContext.Result = new RedirectToRouteResult(routeValues);
    }
    else
    {
        base.HandleUnauthorizedRequest(filterContext);
    }
 }

 private bool IsProfileCompleted(string user)
 {
    // You know what to do here => go hit your database to verify if the
    // current user has already completed his profile by checking
    // the corresponding field
    throw new NotImplementedException();
 }
}