【发布时间】:2018-10-20 19:18:24
【问题描述】:
在开发 ASP.NET Core Web 应用程序时,我需要将 ASP.NET Core Identity 添加到我的项目中。但是我只需要身份的一小部分,因为例如我知道这个应用程序永远不会允许第三方登录。 因此,我决定编写我的自定义商店。在互联网上搜索关于如何做到这一点的好的解决方案时,我经常看到这样的实现:
public Task SetUserNameAsync(ApplicationUser user, string userName, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
if (user == null)
throw new ArgumentNullException(nameof(user));
if(string.IsNullOrWhiteSpace(userName))
throw new ArgumentNullException(nameof(userName));
user.Username = userName;
return Task.CompletedTask;
}
或
public Task<string> GetUserNameAsync(ApplicationUser user, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
if (user == null)
throw new ArgumentNullException(nameof(user));
return Task.FromResult(user.Username);
}
据我所知,它会以这样的方式调用:
var user = await store.GetUserNameAsync(_user, CancellationToken.None);
但这不会基本上为 getter/setter 创建一个状态机,它应该立即返回而没有任何大的开销,或者这样做有什么好处,我现在没有看到?
【问题讨论】:
标签: c# asp.net-core-webapi asp.net-core-identity