5

Ich verwende eine Authentifizierungs-Middleware, die API-Anforderungen an einen Drittanbieter-Dienst sendet. Diese Middleware richtet dann die Ansprüche ein, die später von einem AuthorizationHandler in Verbindung mit einer IAuthorizationRequirement und einer benutzerdefinierten Richtlinie behandelt werden.Benutzerdefinierte Weiterleitung von AuthorizationHandler (ASP.NET Core)

Die Middleware Stück arbeitet und ich bin in der Lage, die Ansprüche zu bauen:

context.User.AddIdentity(identity); // contains claims 

Wo ich bin stecken auf eine bestimmte URL Umleitung (es gibt benutzerdefinierte Regeln für wo wir umleiten müssen) von der Handler oder Attribut. Vom Handler habe ich versucht:

var mvcContext = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext; 
mvcContext.Result = new RedirectToActionResult("login", "home", null); 

aber es wird ignoriert; nur eine 401 wird zurückgegeben. AuthorizeAttribute nicht mehr OnAuthorization, so kann ich das auch nicht ...

Gedanken? Danke.

Antwort

0

Wenn das einzige, was Sie in Ihrem API Middleware versuchen soll, ein LogIn Verhalten auszuführen ist, wie Ihr Code scheint zu erklären, diese möglichen Fälle sind, meiner Meinung nach, zum Nachdenken anregen:

  1. Wenn /login/home leitet zu einer Webseite:

    • Sie HttpContext.Response.Redirect verwenden sollte auf die LogIn Webseite zu umleiten. As the documentation says, Dies würde einen Code 301 senden, den jeder Webbrowser interpretieren kann. Der HttpContext ist in der Invoke-Methode verfügbar.
  2. Wenn /login/home Umleitungen an einem Controller, der Logik ausführt, die Benutzeridentität bestätigt:

Nehmen Sie auch einen Blick auf Nate's post und this question.

Verwandte Themen