【问题标题】:Get parameter from url in ASP.net core 2.1?从 ASP.net core 2.1 中的 url 获取参数?
【发布时间】:2020-07-27 18:47:57
【问题描述】:

我有以下方法:

enter image description here

此方法向电子邮件发送令牌,以便能够恢复正常工作的密码。现在,我使用 JavaScript 创建了以下函数来检索我在 URL 中的参数,

这样就可以得到我在URL中的参数,如下:

https://localhost:5001/AdminUsers/ResetPassword?token=CfDJ8KA%2FkcFChM9Bp%2F8oQHF0OBo113jwJ7upCuf31%2FnOQ%2BWnPS8Dl6kvAMvhRJ1wWsJEKvckfViPbczsNs09kmnUXcMtY7yxnePjossD3LwfVrJo1EXCRk%2B%2FyluiExuLziOmrtVrdMbVKUvn0oBti5vsF%2FOGs2yWdUR%2BFHrGQKe4ioVVnT9m6np0%2FhFjkZawi%2BvHqjM7ayP5cR5VQWTxrhjsvEzJctqsUhEudVXe53JAvmMW%2BYtGFKSSWwOTcp5RFDE9Hw%3D%3D

但此刻我正在尝试使用该令牌更改密码,它向我表明该令牌无效,但该令牌与 URL 中的令牌相同,如下图所示:

enter image description here

enter image description here

我正在做的是通过操作 URL 进行以下操作:

  • 我发送令牌,以便能够更改密码
  • 返回带有表单的视图后,用户必须在其中输入用户名和密码
  • 我通过 Ajax 调用接收用户名和密码,因为我使用的是 Knockout.js 框架

希望你能帮助我,谢谢!

【问题讨论】:

  • 欢迎您!请张贴您的代码,不是图片,而是文字。

标签: javascript jquery asp.net-core knockout.js asp.net-identity


【解决方案1】:

在 URL 中,该值是 URL 编码的,因此它可以在 URL 中有效使用。当通过 URL 提供时,框架足够智能,可以在将值绑定到适当的操作参数之前对其进行解码。但是,当您随后通过请求正文发送它时,就不再发生这种情况了。该值按原样在您的模型上设置,是的,它不会与实际令牌匹配,因为它们是非常不同的字符串。

总之,您要么需要在发出 AJAX 请求之前在客户端对值进行 URL 解码,要么在实际尝试使用令牌之前在服务器端对其进行 URL 解码。在客户端,您可以使用:decodeURIComponent(value)。服务器端,你需要使用HttpUtility.UrlDecode(value)

【讨论】:

  • 我不太明白我将如何做 decodeURIComponent (value) 我将把它放在我接收令牌的模型中,以及 HttpUtility.UrlDecode (value)在我用来重置密码的控制器中
  • 这是一个非此即彼的事情。关键是您需要在某处解码该值。在您发出请求之前,这可能是客户端,也可能是服务器端,然后再进行使用它的调用。没关系。
  • 我会保持这样然后 IdentityResult 结果 = await _userHelper.ResetPasswordAsync (myUser, HttpUtility.UrlDecode (login.Token), login.Password); ,但是decodeURIComponent(value)不知道放在哪里
  • 使用 HttpUtility.UrlEncode 和 HttpUtility.UrlDeEncode 编辑问题,它会抛出相同的无效令牌错误
猜你喜欢
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2019-05-18
  • 2021-01-11
相关资源
最近更新 更多