C# 如何实现自定义方法User.Identity.GetLastUserToken()以获取双因素身份验证中最后分配的令牌?
我实现了如中所示的双因素身份验证,但我想在templete视图中向用户显示一个C# 如何实现自定义方法User.Identity.GetLastUserToken()以获取双因素身份验证中最后分配的令牌?,c#,asp.net,asp.net-mvc-5,asp.net-identity,two-factor-authentication,C#,Asp.net,Asp.net Mvc 5,Asp.net Identity,Two Factor Authentication,我实现了如中所示的双因素身份验证,但我想在templete视图中向用户显示一个TokenViewModel对象,该对象有两个属性,TokenDate和TokenString由@user.Identity.GetLastUserToken()检索.TokenString在视图中 我就这么做 public static class ApplicationIdentityExtensions { public static string FindFirstValue(this ClaimsId
TokenViewModel对象
,该对象有两个属性,TokenDate
和TokenString
由@user.Identity.GetLastUserToken()检索.TokenString
在视图中
我就这么做
public static class ApplicationIdentityExtensions
{
public static string FindFirstValue(this ClaimsIdentity identity, string claimType)
{
return null;
}
public static TokenViewModel GetLastUserToken(this IIdentity identity)
{
return new TokenViewModel(){ TokenDate = DateTime.Now, TokenString= "Token from Mock" };
}
}
正如您所看到的,EmailTokenProvider
中的manager.registerWofactorProvider(“EmailCode”,新的EmailTokenProvider()
行由IUserTokenProvider
继承,我在项目中自行实现
要实现这些方法,必须继承以下内容:
public Task<bool> ValidateAsync(string purpose, string token, UserManager<Usuario, int> manager, Usuario user)
{
//TODO: I guess, must to validate user custom token here using my _respositoryToken.
我该怎么做呢?我在这里找到了解决方案 只需实现以下代码:
var prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal;
var lasttoken = prinicpal.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value).SingleOrDefault();
见:
var prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal;
var lasttoken = prinicpal.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value).SingleOrDefault();
public static TokenViewModel GetLastUserToken(this IIdentity identity)
{
var prinicpal = (ClaimsPrincipal)Thread.CurrentPrincipal;
return prinicpal.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value).Select(i => new TokenViewModel{ TokenValue = i }).SingleOrDefault();
}