我已经在寻找Identity 3.0的答案,并且发现很少有关于获得具有int id的单个用户。
我有一个asp.net-core mvc6项目,我在其中使用字符串id转换所有用户和角色以获得整数ID。
精细。这样可行。我有一个UserAdminController,其中包括更新或编辑动作,它传递" int?"为id。
public async Task<IActionResult> Edit(int? id)
在我的服务中,我想让用户与整数id相关联...&#34; 1&#34;。
我想使用UserManger.FindByIdAsync(id)来获取具有该ID的用户。
问题是,这需要一个&#34;字符串&#34; id不是&#34; int&#34;标识。
使用UserManger(如果可以的话)如何返回一个整数而不是字符串id的用户?必须有一种优雅的方式来返回用户吗?
答案 0 :(得分:9)
只需将您的用户标识符作为字符串...
var user = _userManager.FindByIdAsync("1");
...使用ConfigureServices
TypeConverter
在public virtual Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken = default(CancellationToken))
{
cancellationToken.ThrowIfCancellationRequested();
ThrowIfDisposed();
var id = ConvertIdFromString(userId);
return Users.FirstOrDefaultAsync(u => u.Id.Equals(id), cancellationToken);
}
public virtual TKey ConvertIdFromString(string id)
{
if (id == null)
{
return default(TKey);
}
return (TKey)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString(id);
}
注册时,您已internally convert it back to the key type配置身份:
<?php
$fullUrl = "https://www.{$myVariable}.test.com"; // Repeat for every variable
$locationHref = "window.location.href='{$fullUrl};'";
?>
<td>
<input type="submit" onClick="<?=$locationHref; ?>" value="Click!" />
</td>
答案 1 :(得分:1)
Aliz走在正确的轨道上,但他建议的方法在Identity 3.0中不存在。
然而,这确实可以作为基础使用Aliz选项编号1 ..
var user = await _userManager.Users.FirstOrDefaultAsync(u => u.Id == id);