Asp.Net Web API oAuth 2.0 无法使用包含与号 (&) 的密码进行验证

Posted

技术标签:

【中文标题】Asp.Net Web API oAuth 2.0 无法使用包含与号 (&) 的密码进行验证【英文标题】:Asp.Net Web API oAuth 2.0 cannot validate with password containing ampersand (&) 【发布时间】:2016-04-16 06:15:36 【问题描述】:

我在 AngularJs 应用程序中遇到了有线问题。当用户尝试登录应用时,如果密码中包含与号 (&),则无法验证用户。

我正在使用 OWIN、oAuth2.0 JWT 令牌来验证我的 Asp.Net Web API。

当我调试时发现如果密码中包含 & 符号,那么它会截断 & 符号中的所有字符。

例如,如果密码是“x&x”,则 OAuthValidateClientAuthenticationContext 上下文只会获取密码值中的“x”。

我附上了问题click to see the issue.的屏幕截图。

对此问题的任何帮助,我们将不胜感激。

【问题讨论】:

【参考方案1】:

我猜测该值被解释为查询字符串分隔符。

尝试使用javascript方法

encodeURI()

或者

EncodeURIcomponent()

在发布到服务器之前你的密码值,所以和号变成了

&

服务器将为您解码。 如果您不这样做,您可能会发现斜杠和问号在密码中也不起作用

【讨论】:

因为我是新人并且声誉低于 15,所以我不会这样做,或者我错过了什么。请告诉我。 您单击移动鼠标时出现的勾号/触摸我的答案左侧的位,在upvote 和downvote 按钮之间:) 您还没有足够的声誉对答案进行投票,但您可以接受您提出的问题的答案 :) 祝您有美好的一天,很高兴我能提供帮助 我刚刚点击了勾号。再次感谢! 谢谢你,希望你的项目成功我的朋友【参考方案2】:

在密码字段中输入特殊字符(例如:&、+)时,我在 anguar 项目中遇到了同样的问题。使用 encodeURIComponent 对密码进行编码就可以了:

"&password=" + encodeURIComponent(密码)

希望对你有帮助

【讨论】:

以上是关于Asp.Net Web API oAuth 2.0 无法使用包含与号 (&) 的密码进行验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP .NET Web Api OAuth 刷新令牌过期时间

ASP.net core web api:使用 Facebook/Google OAuth 访问令牌进行身份验证

Google OAuth 2.0 得到错误 400:redirect_uri_mismatch,ASP.net core 3.1

ASP.Net WEB API 2.0 - CORS

如何在 Asp.net MVC 中编写 OAuth2 Web API 客户端

横向扩展 ASP.NET Web Api 2.0?