c# - 默认 AspCore 重置令牌包含非法字符?
问题描述
我正在尝试使用自定义 blazor 页面设置重置令牌。令牌生成工作得很好,使用
var code = await _userManager.GeneratePasswordResetTokenAsync(user);
它生成了以下代码
CfDJ8HVZ73lJc0lGiTBiTdeoRRd//Zc1LM0Q4P+8t7DLaBzwlQ2DuvY2HQ5CWE/E8b3VdlZZYIelpwwrCFz579CeCcQTf+YIPli7KpPTuUpMcTHDs5pAw3XifV7x+5Y/Q6WAPdixXuHE8We9QQRxl7Hnba2vjoJ5fCZ9FMHKpkOq3mxDhgYi/gba2Vse3/R87ztVrisEguYvYQ8h5f2MAVMiCB+H0TakjKjpj2ANAD9wQ2H8
通过邮件发送它需要编码,可以在这个链接中看到,给我
var callbackUrl = _globals.AppUrl
+ "/user/reset/"
+ System.Web.HttpUtility.UrlEncode(code);
现在邮件发送成功,URL 编码成功。但是,打开页面时,我收到 404.11 错误
The request filtering module is configured to deny a request that contains a double escape sequence.
页面声明:
@page "/user/reset/{Code}"
示例网址:
https://localhost:44303/user/reset/CfDJ8HVZ73lJc0lGiTBiTdeoRRfumtSdRgb46HPXLklW0j42IyjqN8rv%2fapJG158YfIrR7dVRNRF2YxJydegd2CMlvm93FTcjkuBwnVPC3N9AtSigiy8VOqeW1nNrRth73urJ23D0V6M2c%2fzE1%2bTuFs8KbB%2fnCG5CE3UnFXG5HleeA%2fwtlyzLgbP4Zrbi5XZ4Q0w4%2b1j83J%2fXvQUqg%2fO5raSkmcO3cb1TGnDWz%2fwqxW%2fbNOe
问题
ASP Core Identity 是否包含默认无法通过电子邮件发送的字符?(我假设是 '+' 字符)。我们可以从世代中排除吗?或者是否有另一种方法来操作防止此错误的 URL。我更喜欢打开双转义字符过滤器,因为它可以提高安全性
编辑
对整个 url 进行如下编码时:
var callbackUrl = _globals.AppUrl
+ "/user/reset/"
+ code;
callbackUrl = HtmlEncoder.Default.Encode(callbackUrl);
出现404错误,因为代码中包含'/',不符合我的路由
解决方案
var callbackUrl =
_globals.AppUrl
+ "/user/reset/"
+ code;
**callbackUrl = HtmlEncoder.Default.Encode(callbackUrl);**
**Update for this**
var callbackUrl = _globals.AppUrl
+ "/user/reset/"
+ code;
**callbackUrl = {callbackUrl};**
推荐阅读
- excel - 如何在 Excel 中将 8.991M 和 0.785M 转换为 8.911.000 和 785.000 之类的数字?
- google-apps-script - 从 GDrive 回收站中删除文件
- python - 如何在 aws sagemaker 中提供每日预先计算的预测?
- facebook - 权限错误 Facebook 自定义转换统计
- python - 使用多处理导入外部模块时使用 Django 视图
- swift - 导航栏中的搜索栏行为在 iOS 13 中不一致
- domain-driven-design - 与患者、牙医、治疗和病史的实体和聚合根源混淆
- flutter - #Flutter Dart 编译器意外退出
- c# - 比较 Voctor.y
- nginx - Janus 的 Nginx 配置