使用 angular.js 激活 link 网络 api

Activation link web api using angular.js

我有一个使用 angular.js 的网站,我的后端使用 asp.net web api。当新用户注册时,会发送一封电子邮件,其中包含激活 link 和其中的令牌,如下所示:

localhost:51426/#/activation?userid=test&code=FCuuf27NzVvmwp2Ksd7IDt83C2XZmZ2paCrZPBLgr9qR8xCaXELvqKCsWlg4uiokb07XK5sQ+2BazHN1+2B74q14grkQY2OHDAVeWlin5GE8ugkyw+2BJFFzd3Q2YiVuMxkmkO6OFdhIyfzUQMV8NPipME+2FST1pa0OuQs90kRUNR5kTkPlGQYKflDOMQvDGV84fZIw

当用户单击 link 时,我有一个 angular 控制器,它基本上只是获取参数并调用 web.api 中的好方法,如下所示:

return $http.post(baseUrl + 'api/v1/account/confirmAccount?userId=' + userId + '&code=' + code);

问题是服务器端的所有 + 都被 space 替换了,所以当我尝试在我的网站 api 中验证令牌时,它不起作用。

不确定为什么 + 被替换为 space 以及如何避免这种情况。

谢谢

一个选项可能是先构建字符串并完全消除 +。

问题是查询字符串+字符are replaced by spaces:

URL Encoding:

The HTML specifies the following transformation:

  • SPACE is encoded as '+' or "%20" [9]

您可以做的是在服务器上用 + 替换 space 字符:

string newCode=code.Replace(' ','+')