Zobacz tę odpowiedź: When implementing your own IUserStore, are the "optional" interfaces on the class actually optional?
Trzeba będzie oszukać lub nadpisać metodę próbujesz zadzwonić do sklepu aby wdrożyć taki, który nie korzysta z „opcjonalne” sklep blokady.
Może być nieprzyjemnie zaskoczony fakt, że konieczne jest również wdrożenie opcjonalnego interfejsu dla dwóch czynników. Użyj tej samej odpowiedzi poniżej, aby to zrobić, chyba że masz środek dwuczynnikowy.
Najpierw jednak tutaj jest wdrożenie domyślny:
public virtual async Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
...
if (await UserManager.IsLockedOutAsync(user.Id).WithCurrentCulture())
{
return SignInStatus.LockedOut;
}
if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture())
{
return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture();
}
...
return SignInStatus.Failure;
}
Jedna odpowiedź: tworzyć niepotrzebnych zapasów.
#region LockoutStore
public Task<int> GetAccessFailedCountAsync(MyUser user)
{
throw new NotImplementedException();
}
public Task<bool> GetLockoutEnabledAsync(MyUser user)
{
return Task.Factory.StartNew<bool>(() => false);
}
public Task<DateTimeOffset> GetLockoutEndDateAsync(MyUser user)
{
throw new NotImplementedException();
}
public Task<int> IncrementAccessFailedCountAsync(MyUser user)
{
throw new NotImplementedException();
}
public Task ResetAccessFailedCountAsync(MyUser user)
{
throw new NotImplementedException();
}
public Task SetLockoutEnabledAsync(MyUser user, bool enabled)
{
throw new NotImplementedException();
}
public Task SetLockoutEndDateAsync(MyUser user, DateTimeOffset lockoutEnd)
{
throw new NotImplementedException();
}
#endregion
}
Inne rozwiązanie: zastąp, aby po prostu go nie używać.
public virtual async Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
...
if (false)
{
return SignInStatus.LockedOut;
}
if (await UserManager.CheckPasswordAsync(user, password).WithCurrentCulture())
{
return await SignInOrTwoFactor(user, isPersistent).WithCurrentCulture();
}
...
return SignInStatus.Failure;
}
CF/http://eliot-jones.com/Code/asp-identity/MyUserStore.cs
link na końcu nie działa już. Czy możesz aktualizować? – Vinigas