Ich versuche, eine Lösung zu entwerfen, bei der ein ServiceStack-Server einfach ein Authentifizierungs-Cookie von ASP.NET verwenden kann. (In Wirklichkeit könnte es irgendein Cookie sein. Es bekommt nur eine Sitzungs-ID, dass es Details über einen Rückkanal nachschlagen kann). Die benutzerdefinierten Authentifizierungsprovider scheinen nicht die richtige Richtung zu sein, da sie auf gesendeten Anmeldeinformationen basieren. Stattdessen machte ein GlobalRequestFilter für mich mehr Sinn. Dort überprüfe ich den Cookie, erhalte die externen Sitzungsinformationen, setze sie dann auf die ServiceStack-Sitzung und setze IsAuthenticated. Dies funktioniert im Anforderungsdienst, da er auf die erforderlichen Sitzungsdetails zugreifen kann. Gut so weit.Benutzerdefinierte Sitzung funktioniert nicht mit Authentifizierung
Das Problem ist, dass, wenn ich beschließe, Dienste mit dem Attribut Authenticate zu sperren, es anscheinend das Attribut vor meinem Filter ausgeführt wird, so dass es immer um die Anmeldung umleiten will. Was ist der empfohlene Ort, um meine Logik hinzuzufügen, sodass sie vor dem Authenticate-Attribut ausgelöst wird und ordnungsgemäß validiert wird?
nur bemerkt und geändert von GlobalRequestFilters zu PreRequestFIlters, aber immer noch keine Hilfe. immer noch 401, wenn es das Attribut Authenticate –
Ich denke, ich habe es gesehen. Die tatsächliche Methode zum Ermitteln, ob die Sitzung das Authenticate-Attribut erfüllt, besteht darin, die IsAuthorized-Methode der Sitzung zu überschreiben (Sie müssen eine stark typisierte AuthUserSession erstellen) und true zurückzugeben, je nachdem, welcher Anbieter fragt. 'öffentliche Überschreibung Bool IsAuthorized (String-Provider) { Rückkehr base.IsAuthorized (Anbieter); } ' –