Hier ist meine Auth Configreq.GetApiKey() führt keine Abfrage in DB ServiceStack ApiKeyAuthProvider
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[]
{
new ApiKeyAuthProvider(AppSettings) {RequireSecureConnection = false }
})
{
IncludeRegistrationService = true,
});
Globale Filter
GlobalRequestFilters.Add((req, res, requestDto) =>
{
LastApiKey = req.GetApiKey();
});
I Api Schlüssel in DB generiert haben und versucht einen Pass zu spielen der Schlüssel durch Postbote oder JsonServiceClient mit Standard-Authentifizierung mit API-Schlüssel in Benutzername der HTTP-Anfrage. Ich habe versucht, Träger-Token in HTTP-Anfrage zu übergeben, aber nicht in der Lage, API-Schlüssel von req.GetApiKey() zu bekommen. Wenn ich den SQL Profiler durchschaue, wird keine Abfrage ausgeführt. Ich bin jedoch in der Lage, IManageApiKeys aufzulösen und seine Methoden auszuführen. Benötige ich ein Attribut in meinem Dienst oder eine zusätzliche Konfiguration in AppHost?
Was mir fehlte [Authentifizieren] -Attribut auf api Service anwandte Methode und hat nicht funktioniert. Als ich mich bei der Serviceklasse beworben habe, hat es wie erwartet funktioniert. Danke @mythz. – Anuj
@Anju FYI Das liegt daran, dass das '[Authenticate] '' 'Attribut in der Aktion ausgeführt wird, nachdem die GlobalRequestFilters ausgeführt wurden, aber' base.Request.GetApiKey() 'weiterhin vorhanden ist, wenn der Service ausgeführt wird. – mythz