我想在ASP.NET Core MVC中構建一個網站,並使用Microsoft.Identity庫。我在我的User
(ApplicationUser)類中有一個定製屬性,名爲Token
。我想用該令牌在登錄時創建一個cookie。所以我需要調用一些函數來允許我從登錄用戶(通過UserManager或其他)獲取Token
屬性,它必須是登錄的用戶。ASP.NET核心MVC自定義標識屬性
我已經在網上搜索並找到通過創建一個自定義工廠,然後將其添加到startup.cs Like this幾個解決方案。但我無法找到或看到訪問該屬性的方法。 User.Identity.GetToken()
不起作用。
這裏是我的自定義工廠:
public class CustomUserIdentityFactory : UserClaimsPrincipalFactory<User, IdentityRole>
{
public CustomUserIdentityFactory(UserManager<User> userManager, RoleManager<IdentityRole> roleManager, IOptions<IdentityOptions> optionsAccessor) : base(userManager, roleManager, optionsAccessor)
{}
public override async Task<ClaimsPrincipal> CreateAsync(User user) {
var principal = await base.CreateAsync(user);
if(!string.IsNullOrWhiteSpace(user.Token)) {
((ClaimsIdentity)principal.Identity).AddClaims(new[] {
new Claim(ClaimTypes.Hash, user.Token)
});
}
return principal;
}
}
這裏是在配置我Startup.cs
services.AddScoped<IUserClaimsPrincipalFactory<User>, CustomUserIdentityFactory>();
所以,長話短說:我試圖訪問一個自定義的身份屬性,並已找到了方法將其添加到UserManager,但無法找到訪問它的方法。
我通過在用戶登錄後通過設置cookie來解決這個問題,方法是用'(await _userManager.GetUserAsync(HttpContext.User))提取用戶。「Token' –