Hi Ich bin neu mit Servicestack zu arbeiten und habe ihr sehr umfangreiches Bootstrapapi-Beispiel heruntergeladen und arbeite damit, habe aber immer noch einige Probleme. Das Problem ist mit Sicherheit, was passiert, wenn ich 405 Fehler beim Zugriff auf die geschützten Dienste bekomme. Mit dem Authentifizierungsdienst scheint es, dass ich mich korrekt authentifiziere. Bitte helfen und erklären. Hier ist der Code:
%Vor%Die Dienstleistungen:
%Vor%Hier ist der AppHost:
%Vor%AKTUALISIEREN
Alles funktioniert wie erwartet, wenn Sie ersetzen: RestServiceBase mit: ISevice also ist jetzt die Frage warum.
Ich würde zuerst die Dokumentation in ServiceStacks Authentifizierungs-Wiki durchgehen, um eine bessere Vorstellung davon zu bekommen wie die Authentifizierung von ServiceStack funktioniert. Es gibt eine Menge Dokumentation im Wiki. Wenn du dir also nicht sicher bist, solltest du dich zuerst darauf beziehen. Es ist ein Community-Wiki, also kannst du gerne erweitern, was es ist, wenn du denkst, es könnte anderen helfen.
Wenn Sie nicht sicher sind, was Sie tun sollten, beziehen Sie sich auf den RequiredRole-Quellcode als die Hauptautorität, wie es funktioniert. RequiredRole
ist nur ein Filteranforderungsattribut , das vor jedem Service mit diesem Attribut ausgeführt wird.
Das RequiredRole-Attribut ruft nur Ihre session.HasRole()
-Methode als auf hier gesehen :
Da Ihre Sitzung gerade aufgerufen wird, können Sie die Implementierung von session.HasRole()
überschreiben, wenn Sie eine benutzerdefinierte Sitzung haben.
Das Social BootstrapApi-Projekt implementiert eine eigene CustomSession , die es enthält registriert sich hier , überschreibt jedoch nicht die HasRole()
-Implementierung Es verwendet die integrierte Implementierung in der Basis AuthUserSession.HasRole ( ) , die einfach wie die Roles-Auflistung aussieht, um zu sehen, ob der Benutzer die angegebene Rolle in seiner Session POCO hat:
Die Eigenschaft Rollen (wie auch die meisten anderen Eigenschaften in einer Benutzersitzung) wird vom AuthUserRepository ausgefüllt, das Sie z. wenn Sie das OrmLiteAuthRepository wie SocialBootstrapApi tut dies hier , da das Rollenattribut in den Rollen
Damit ein Benutzer die erforderliche Rolle (und die Berechtigung zum Übergeben) hat, sollte diese Rolle zu seinem UserAuth-Db-Zeileneintrag hinzugefügt werden. ServiceStacks AuthFeature enthält zwei Dienste zum Verwalten von Benutzerberechtigungen und -rollen:
Für diese Dienste ist ein Benutzer mit der Administratorrolle OnAuthenticated()
-Ereignis auf seinem CustomUserSession , die einfach überprüft, ob der authentifizierte Benutzername in der Web.Config deklariert ist, und wenn dies der Fall ist, ruft der AssignRoles-Dienst den authentifizierten Benutzer als Admin auf:
Tags und Links security web-services servicestack