在框架 4.7 上缺少 OnRedirectToLogin



我想使用OnRedirectToLogin事件(存在于 ASP.NET Core上,但不存在于.NET Framework 4.7中(来操纵 ASP.NET Identity将未经身份验证的候选人重定向到登录页面的方式。

  1. 上述还有其他选择吗?
  2. 这是否意味着Microsoft开始在.NET Core和.NET Framework之间创建功能差距,以及使用.NET Core而不是.NET Framework启动新项目的另一个原因?

上述还有其他选择吗?

是的。子类AuthorizeAttribute并重写AuthorizeAttribute.HandleUnauthorizedRequest方法。 HandleUnauthorizedRequest仅在用户未获得授权时触发。

public class CustomAuthorize : AuthorizeAttribute
{
    public override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        filter.Result = new RedirectToRouteResult(...);
    }
}

然后在您通常使用[Authorize]的任何地方使用[CustomAuthorize]

这是否意味着Microsoft开始在.NET Core和.NET Framework之间创建功能差距,以及使用.NET Core而不是.NET Framework启动新项目的另一个原因?

由于AspNetCore是一个完全不同的UI框架,具有新的设计,而不是ASP.NET MVC的演变,您可以期望它们之间存在差距。虽然,除非您是想要同时支持这两个框架的库开发人员,否则我看不出这是一个问题。

您可以在 CookieAuthenticationProvider 上使用 OnApplyRedirect 事件。请注意,上下文参数是 CookieApplyRedirectContext,而不是标准的 HttpContext。

更多信息在这里

 var options = new CookieAuthenticationOptions
       {
           AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = "Account/Login",
           Provider = new CookieAuthenticationProvider
           {
               OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                   validateInterval: TimeSpan.FromMinutes(30),
                   regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
               OnApplyRedirect = context =>
               {
                    //do something here
               }
           }                 
     };
}

相关内容

  • 没有找到相关文章

最新更新