Wie man in returnUrl AccessDeniedPath in ASP.NET MVC 6 (ASP.NET Kern)

Ich benutze die neueste version von ASP.NET MVC 6.

Folgende Einstellungen gesetzt sind Startup.cs Datei:

public void ConfigureServices(IServiceCollection services)
{
            services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
            {
                options.Cookies.ApplicationCookie.LoginPath = new PathString("/account/login");
                options.Cookies.ApplicationCookie.AccessDeniedPath = new PathString("/error/accessdenied");
                options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(1);
                options.Cookies.ApplicationCookie.SlidingExpiration = false;
                options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
                options.Cookies.ApplicationCookie.AutomaticChallenge = true;
            })
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();
}

In der Account – Controller Aktion Login

        [HttpGet]
        [AllowAnonymous]
        public IActionResult Login(string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            return View();
        }

In der oben genannten Methode habe ich kein problem damit returnUrl.

Auch in der Steuerung Error hat Maßnahmen AccessDenied

        [AllowAnonymous]
        [HttpGet]
        public IActionResult AccessDenied(string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            return View();
        }

Aber wenn der Benutzer hat keine Berechtigung zum Zugriff auf die Seiten der Website, die das system leitet den Benutzer auf eine Seite ../error/accessdenied.

Im moment, nachdem ich umgeleitet returnUrl Wert ist null.

Bekomme ich die Adresse der Seite, von der aus der Benutzer umgeleitet wurde (ebenso wie es funktioniert für LoginPath)?

InformationsquelleAutor Kolya_Net | 2016-04-08



One Reply
  1. 2

    Es scheint, es wird ausgeliefert werden in die RC2, werfen Sie einen Blick auf die CookieAuthorizationHandler.HandleForbiddenAsync Methode, den Quelltext auf GitHub,

    protected override async Task<bool> HandleForbiddenAsync(ChallengeContext context)
    {
        var properties = new AuthenticationProperties(context.Properties);
        var returnUrl = properties.RedirectUri;
        if (string.IsNullOrEmpty(returnUrl))
        {
            returnUrl = OriginalPathBase + Request.Path + Request.QueryString;
        }
        var accessDeniedUri = Options.AccessDeniedPath + QueryString.Create(Options.ReturnUrlParameter, returnUrl);
        var redirectContext = new CookieRedirectContext(Context, Options, BuildRedirectUri(accessDeniedUri), properties);
        await Options.Events.RedirectToAccessDenied(redirectContext);
        return true;
    }

    Können Sie ein feedback auf, wie die Migration von RC1 zu RC2 auf die Home-repository.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.