网站首页 网站源码
using Dpz.Core.Public.ViewModel;
using Dpz.Core.Service.RepositoryService;
using Microsoft.AspNetCore.Identity;
namespace Dpz.Core.Auth.Service;
public sealed class UserInfoStore(IAccountService accountService) : IUserStore<VmUserInfo>
{
public void Dispose() { }
public async Task<string> GetUserIdAsync(VmUserInfo user, CancellationToken cancellationToken)
{
return await Task.Run(() => user.Id, cancellationToken);
}
public async Task<string?> GetUserNameAsync(
VmUserInfo user,
CancellationToken cancellationToken
)
{
return await Task.Run(() => user.Name, cancellationToken);
}
public async Task SetUserNameAsync(
VmUserInfo user,
string? userName,
CancellationToken cancellationToken
)
{
await Task.Run(() => user.Name = userName, cancellationToken);
}
public async Task<string?> GetNormalizedUserNameAsync(
VmUserInfo user,
CancellationToken cancellationToken
)
{
return await Task.Run(() => user.Name, cancellationToken);
}
public async Task SetNormalizedUserNameAsync(
VmUserInfo user,
string? normalizedName,
CancellationToken cancellationToken
)
{
await Task.Run(() => user.Name = normalizedName, cancellationToken);
}
public Task<IdentityResult> CreateAsync(VmUserInfo user, CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
public Task<IdentityResult> UpdateAsync(VmUserInfo user, CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
public Task<IdentityResult> DeleteAsync(VmUserInfo user, CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
public async Task<VmUserInfo?> FindByIdAsync(string userId, CancellationToken cancellationToken)
{
return await accountService.GetOneUserAsync(userId);
}
public async Task<VmUserInfo?> FindByNameAsync(
string normalizedUserName,
CancellationToken cancellationToken
)
{
return await accountService.GetUserInfoByNameAsync(normalizedUserName);
}
}
上述代码定义了一个名为 UserInfoStore 的类,它实现了 IUserStore<VmUserInfo> 接口。这个类的主要功能是作为用户存储的实现,允许对用户信息进行基本的操作,如获取用户信息、更新用户信息等。以下是代码的详细解释:
public sealed class UserInfoStore(IAccountService accountService) : IUserStore<VmUserInfo>:UserInfoStore 是一个密封类,意味着它不能被继承。IUserStore<VmUserInfo> 接口,VmUserInfo 是用户信息的视图模型。IAccountService 类型的参数 accountService,用于与用户账户相关的操作。该类实现了 IUserStore<VmUserInfo> 接口中的多个方法,具体功能如下:
Dispose:
public void Dispose() { }:实现了 IDisposable 接口,但没有任何资源需要释放。GetUserIdAsync:
public async Task<string> GetUserIdAsync(VmUserInfo user, CancellationToken cancellationToken):异步获取用户的 ID。GetUserNameAsync:
public async Task<string?> GetUserNameAsync(VmUserInfo user, CancellationToken cancellationToken):异步获取用户的名称。SetUserNameAsync:
public async Task SetUserNameAsync(VmUserInfo user, string? userName, CancellationToken cancellationToken):异步设置用户的名称。GetNormalizedUserNameAsync:
public async Task<string?> GetNormalizedUserNameAsync(VmUserInfo user, CancellationToken cancellationToken):异步获取用户的标准化名称(通常是大写或小写)。SetNormalizedUserNameAsync:
public async Task SetNormalizedUserNameAsync(VmUserInfo user, string? normalizedName, CancellationToken cancellationToken):异步设置用户的标准化名称。CreateAsync:
public Task<IdentityResult> CreateAsync(VmUserInfo user, CancellationToken cancellationToken):创建用户的操作尚未实现,抛出 NotImplementedException。UpdateAsync:
public Task<IdentityResult> UpdateAsync(VmUserInfo user, CancellationToken cancellationToken):更新用户的操作尚未实现,抛出 NotImplementedException。DeleteAsync:
public Task<IdentityResult> DeleteAsync(VmUserInfo user, CancellationToken cancellationToken):删除用户的操作尚未实现,抛出 NotImplementedException。FindByIdAsync:
public async Task<VmUserInfo?> FindByIdAsync(string userId, CancellationToken cancellationToken):根据用户 ID 异步查找用户信息,调用 accountService.GetOneUserAsync(userId)。FindByNameAsync:
public async Task<VmUserInfo?> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken):根据标准化的用户名异步查找用户信息,调用 accountService.GetUserInfoByNameAsync(normalizedUserName)。UserInfoStore 类提供了对用户信息的基本操作接口实现,主要用于与用户账户相关的操作。虽然创建、更新和删除用户的功能尚未实现,但它提供了获取和查找用户信息的基本功能。这个类通常会在身份验证和用户管理的上下文中使用。
