Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当多个实例运行时,ASP.NET重置密码时的令牌无效_C#_Asp.net_Kubernetes_Asp.net Web Api2_Asp.net Identity - Fatal编程技术网

C# 当多个实例运行时,ASP.NET重置密码时的令牌无效

C# 当多个实例运行时,ASP.NET重置密码时的令牌无效,c#,asp.net,kubernetes,asp.net-web-api2,asp.net-identity,C#,Asp.net,Kubernetes,Asp.net Web Api2,Asp.net Identity,我正在使用Web API和Asp.net标识执行与用户相关的操作。 尝试使用GeneratePasswordResetTokenAsync方法生成的令牌重置密码, 但我得到了错误“无效令牌” 注: 使用Kubernetes并拥有应用程序的多个实例(POD),我面临这个错误。但是,在本地运行时,它可以正常工作 private static UserManager<IdentityUser> _userManager; public async Task<IActionResul

我正在使用Web API和Asp.net标识执行与用户相关的操作。 尝试使用GeneratePasswordResetTokenAsync方法生成的令牌重置密码, 但我得到了错误“无效令牌” 注: 使用Kubernetes并拥有应用程序的多个实例(POD),我面临这个错误。但是,在本地运行时,它可以正常工作

private static UserManager<IdentityUser> _userManager;

public async Task<IActionResult> ForgotPassword(string email)
{
  var user = await _userManager.FindByEmailAsync(email);
  var resetToken = await _userManager.GeneratePasswordResetTokenAsync(user);
  result = await SendForgotPasswordLinkEmail(email, resetToken);
  if (result)
    return Ok(result);
  else
    return BadRequest(result);
}
public async Task<IActionResult> ResetPassword(model)//model contains all neccessary values
{
  var user = await _userManager.FindByEmailAsync(model.Email);
  var check =await_userManager.ResetPasswordAsync(user,model.ResetPasswordToken,model.Password);               
}
private static UserManager\u UserManager;
公共异步任务放弃密码(字符串电子邮件)
{
var user=await\u userManager.findbyemailsync(电子邮件);
var resetToken=wait_userManager.GeneratePasswordResetTokenAsync(用户);
结果=等待SendForgotPasswordLinkEmail(电子邮件、resetToken);
如果(结果)
返回Ok(结果);
其他的
返回请求(结果);
}
公共异步任务ResetPassword(model)//model包含所有必需的值
{
var user=await\u userManager.findbyemailsync(model.Email);
var check=wait_userManager.ResetPasswordAsync(user,model.ResetPasswordToken,model.Password);
}

安全性-忘记密码应始终
返回Ok()
。无论是在响应中还是在响应返回到客户端所需的时间内,都不应向客户端传输任何可能表明电子邮件地址有效性的信息。这是asp.net还是core分类?在任何情况下,我认为解决方案是集中加密密钥存储我的意思是问这是经典还是.net Core我也有同样的问题,你找到解决方案了吗?是的@JonathanAlfaro,我真的很想沿着这条路走,我最终用Redis DB做到了。我希望我能早点找到谈论如何做到这一点的Microsoft文档。以下是我用来参考的文档,以防有人也需要它:看起来你好像没有读过这个问题。没有代码问题,但在不同的“虚拟”机器(docker容器)中运行的加密有问题。
// try this code
public IdentityResult ChangePassword(string email,string password)
{
        var user = UserManager.FindByName(email); 
        var token = UserManager.GeneratePasswordResetToken(user.Id);
        return UserManager.ResetPassword(user.Id, token, password);
}