我正在生成EmailConfirmationToken以确认电子邮件。生成的令牌如下所示:
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA48Afnm/pyU6UZrt2VXGfHAAAAAACAAAAAAADZgAAwAAAABAAAAAv/3aZrzISkdKPKY/E44DXAAAAAASAAACgAAAAEAAAAAzqg9nuZRZdY2nbqshoqZRgAAAAzqerzjcOuZ06IgrWypvNdp406OlHJpcn/KIr6ZlgMqbPU/4S3COVpY8jcfc0O4/zlZbyLdgVeKCX22P6rvwRWXIAdA/mR+cfgRoOMw16DGh0WpOR26Qan/YeVj8vDwW1FAAAAIskto/9Vzb/7Em2RspEQvZaEqbD
我通过电子邮件将该令牌作为超链接发送给用户。 当用户点击链接时,他将重定向到我的确认功能。
这是我实现该功能的方式:
[Route("Register/ConfirmEmail")]
[HttpGet]
public async Task<IHttpActionResult> ConfirmEmail(string userId, string code)
{
string errorMessage = null;
if (userId == null || code == null)
{
errorMessage = "Die Benutzeridentifikation oder der Aktivierungscode sind beschädigt";
return RenderEmailConfirmedPage(userId, errorMessage);
}
var registerContext = new RegisterContext
{
UserId = userId,
ActivationCode = code
};
var result = await userService.ConfirmEmailAsync(registerContext);
问题是我得到的代码无效,请查看以下标记:
AQAAANCMnd8BFdERjHoAwE/Cl sBAAAA48Afnm/pyU6UZrt2VXGfHAAAAAACAAAAAAADZgAAwAAAABAAAAAv/3aZrzISkdKPKY/E44DXAAAAAASAAACgAAAAEAAAAAzqg9nuZRZdY2nbqshoqZRgAAAAzqerzjcOuZ06IgrWypvNdp406OlHJpcn/KIr6ZlgMqbPU/4S3COVpY8jcfc0O4/zlZbyLdgVeKCX22P6rvwRWXIAdA/mR cfgRoOMw16DGh0WpOR26Qan/YeVj8vDwW1FAAAAIskto/9Vzb/7Em2RspEQvZaEqbD
你知道为什么所有 + 都被删除了吗?
答案 0 :(得分:2)
+字符在URL中具有特殊含义。您需要在返回确认URL之前对其进行编码。 UrlEncode实用程序应该可以满足您的需求。
https://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode(v=vs.110).aspx
通过您的网址字符串通过该方法返回给用户之前,它应该用%2B替换+符号