asp.net 身份 - SetPasswordHashAsync

asp.net identity - SetPasswordHashAsync

我正在尝试配置身份以使用自定义提供程序。到目前为止一切顺利,我已经创建了 UserStore:

public class UserStore : IUserStore<User>, IUserPasswordStore<User>

(实现了所有方法)和 UserManager:

public UserManager(IUserStore<User> userStore)
        : base(userStore)
    { }

而用户是我用来保存用户的自定义实体。

问题是在 UserStore 我有以下内容:

public async Task SetPasswordHashAsync(User user, string passwordHash)

据我了解,这是在创建用户之前调用的,所以我在这里应该做的是:

public Task SetPasswordHashAsync(User user, string passwordHash)
{
    user.PasswordHash = passwordHash;
}

...但这必须 return 一个任务,我看不到这里有任何异步操作。

  1. 为什么 return 类型是 SetPasswordHashAsync 的任务而不仅仅是 void?
  2. 我应该如何实施SetPasswordHashAsync

我知道我可以做类似的事情

public async Task SetPasswordHashAsync(User user, string passwordHash)
{
    user.PasswordHash = passwordHash;
    await Task.FromResult(0);
}

...但这不是同步的吗?很奇怪看到所有其他方法都用 async Task 装饰并使用 await,而这个到 return Task.FromResult()

有人吗?

任务不必是异步的。您可以按如下方式实现它:

public Task SetPasswordHashAsync(User user, string passwordHash)
{
    user.PasswordHash = passwordHash;
    return Task.FromResult(0);
}