I Implementiert einen benutzerdefinierten Benutzerservice zum Speichern von Benutzerdaten in einer Datenbank.IdentityServer WithCustomUserService bei externer Anmeldung löst nullreference-Ausnahme aus
Da bekomme ich eine NullReferenceException, wenn ich versuche, mit einem externen Anbieter wie Facebook authentifizieren.
Ich kann diesen Stapel in der Ausnahme sehen, die angibt, dass ein Wert für die Login-Seite fehlt. Als Ergebnis nach dem Klicken auf den Facebook Button stehe ich wieder auf der Login Seite.
Aber ich weiß nicht, warum oder welcher Wert genau
ich, dass am Ende des AuthenticateExternal sehen context.AuthenticateResult.User.Claims
diese Forderungen enthält
meinen Benutzer Service Aussehen vereinfacht so
public override async Task AuthenticateExternalAsync(ExternalAuthenticationContext context)
{
string id = context.ExternalIdentity.Claims.FirstOrDefault(i => i.Type == "id").Value;
var user = await gateway.ByExternalIds(context.ExternalIdentity.Provider, id);
if (user == null)
{
string displayName = context.ExternalIdentity.Claims.FirstOrDefault(i => i.Type.Equals("urn:facebook:name")).Value;
user = new User(context.ExternalIdentity);
await gateway.StoreAsync(user);
}
if (user != null)
{
await gateway.SetLastLogin(user.Subject, DateTimeOffset.Now);
context.AuthenticateResult = new AuthenticateResult(user.Subject, GetDisplayName(user), identityProvider: context.ExternalIdentity.Provider);
}
}
Was fehlt mir?