我正在使用现有的身份验证API和存储库,目前只公开两种方法 .

Task<User> Login(string username, string password);

Task Logout(User user);

我想用asp.net核心身份来使用它 . 所有应用程序都需要能够登录,注销并显示当前登录的用户 .

这是我目前关于如何做到这一点的想法 .

像这样扩展SignInManager类

public class MySignInManager : SignInManager<User>
{
      public Override async Task<SignInResult> PasswordSignInAsync(string userName, string password,
        bool isPersistent, bool lockoutOnFailure)
      {
               var user = await Login(userName, password);
               if (user != null)
               {
                    return SignInResult.Success;
               }
               else
               {
                    return SignInResult.Failure;
               }
      }
}

然后在我的启动中看起来像这样:

services.AddIdentity<User, IdentityRole>()
    .AddDefaultTokenProviders();

 services.AddTransient<MySignInManager>();

我读了这篇文章:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers

并且他们建议实现IUserStore并从那里处理现有的API,但在阅读了SignInManager和UserManager的默认实现之后,它似乎以单独的方法检查用户名和密码 .

很抱歉由于我对这个主题缺乏了解,我对Identity Server很陌生 . 任何帮助将不胜感激!