Aspnet Core 1.0身份用户管理器ConfirmEmailAsync返回InvalidToken

时间:2016-12-18 12:07:46

标签: asp.net-core asp.net-identity

当用户单击他们收到的电子邮件中的确认电子邮件链接时,该URL会将用户定向到帐户控制器中的ConfirmEmailAsync方法。 然后,此方法将调用结果返回给电子邮件令牌提供程序。

<div class="header">
    <div class="navbar"> 
        <img src="img/logo.png" alt="" style="">
        <font color="white">LOGO</font> 
            <div class="menuleft">          
                <a href="home">HOME </a>
                <a href="images">PORTOFOLIO </a>
                <a href="link1">LINK1 </a>
                <a href="link2">LINK2 </a>
                <a href="link3">LINK3 </a>
            </div>
    </div>
</div> 

当用户注册并在上面的代码变量中传递的令牌相同时,我已捕获生成的电子邮件令牌。

我尝试过Base64编码和解码但没有成功,但我相信这是由asp-net-core-identity-token-providers自动完成的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

通过身份生成的令牌与用户的SecurityStamp相关联。如果由于任何原因更新了标记,则所有先前发送的标记都将失效。更改或设置密码会导致这种情况发生。

这可能是一个操作顺序问题。在您发送电子邮件以验证他们提供的电子邮件后,您是否偶然保存了注册密码?

例如,这将失败:

  • 使用令牌发送电子邮件
  • 保存注册信息,如密码
  • 尝试使用令牌。

相反,这应该有效:

  • 保存注册信息
  • 使用令牌发送电子邮件
  • 尝试使用令牌

这种情况只是一个例子,因为我无法确定代码的设置方式。也就是说,如果令牌是相同的,那么很可能是安全戳是问题所在。在整个过程中密切关注数据库,看看是否有更新内容。