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