当我使用usermanager生成一个密码重置令牌时,一旦这个令牌被传递给剃刀视图,令牌就会发生变化。
下面是一个例子:
var resetToken = await userManager.GeneratePasswordResetTokenAsync(userId);
if (registerSuccess)
{
var model = new ResetModel { Token = resetToken, UserId = userId };
return this.View(model);
} 我在调试时可以看到重置标记的值是
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAmfrU4hd3Q0WLiANC7DsekQAAAAACAAAAAAADZgAAwAAAABAAAAB1Q/FgOVgsh+0SsLLYSKrFAAAAAASAAACgAAAAEAAAAFMVfXSy24PLGHSoIqFO/YRAAAAAYll/7E8QwrH5JEfhMKGVHNe4CZM3TFWVL4lRE7Jhm/I6CKkTdloHofac054Ergy7BtwtV9OM7ila3f/ti90iDBQAAABAfR8pdGZ2eBXq/sGw0qVP6PQlWg==
但是,一旦在视图上呈现,它就会更改为
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAmfrU4hd3Q0WLiANC7DsekQAAAAACAAAAAAADZgAAwAAAABAAAACDU0qQzkc65kQa58ift5NBAAAAAASAAACgAAAAEAAAAGGy5Flp6xtR7cGZkvRoNNpAAAAAha1iP7uXqD6KSKbWBOfdXM1KaZnOekiYTSad6/zkejoCk5cDd1FK/JdxKS0Rx9rHeqTJpZkzeEmh5HI3//cLixQAAAAJFOivgVuhoOXTMZMeY+AlLzmifQ==
视图代码如下所示:
@Html.HiddenFor(x => x.Token)我完全不知道这里发生了什么事。有人知道发生了什么吗?为什么令牌在呈现到视图后会发生变化?
发布于 2014-12-17 00:02:34
如果令牌被传递到Url,则需要为令牌添加Url编码:
var resetToken = await userManager.GeneratePasswordResetTokenAsync(userId);
resetToken = System.Web.HttpUtility.UrlEncode(resetToken);否则,浏览器会处理令牌中可能出现的特殊符号。
如果在视图中打印,则需要通过Html.Raw关闭HtmlEncoding
<input type="hidden" value="@Html.Raw(Model.Token)" name="Token" />https://stackoverflow.com/questions/27503014
复制相似问题