gpt4 book ai didi

angularjs - 如果电子邮件地址中包含 '+',则 Angular 向 Asp.net Web API 发送访问 token 将不起作用

转载 作者:行者123 更新时间:2023-12-03 07:01:10 26 4
gpt4 key购买 nike

我的应用程序中的安全性工作正常,除非用户尝试使用电子邮件中的“+”登录。

访问 token 看起来不错(当电子邮件包含 + 时,它看起来像这样):

Bearer 8BGpt_KkEp-_6U5tUdKqK1xLCQBaWzHcxDT9RRKkbzoF2fHCUNhRL3U-fpLdQIuSXm8RcTOH4ZY3a0UZH6-6IgXxx_ojgyL26179JovRm5xQSZD7ANxLvvdU3ubfcpzSr4tw-sza37UaJh7xDFB8eH0NA9Djt7Ik8Ebxdin7u-n76InCulRAV6xMWgXfF9bwoU8MsV3lrh_zhnxYGnx3O7QUNQ740NUJLHJYH12rBth16CA1AXSF86rA5rUB7vJ7yK09k_FJTifyuldTeFHJHsyscnEIQxGozbf3x1cmZowkiK4Q1r8W0M8uz25m8j_tuMrWawTqYJNZiTuI9afW38WWQ4BRLkQF7TwoMOgZQ-f1K_3W8Zy3x-OsKdQS4i9CapvKe1utCscZVroByvyD9SvpILGiZGTjGD_zCAm8KerMPT5GNOb07kPGV_167PHEXm0TGaJbCelb5gLgXbMXv3GxBQLnYIfPUXCBaKx4UFkY8kFMPs9MxFcGY81p67rfnjeswBZ3PW6fDFTf9U_I8g

但是,当我尝试使用此访问 token 发送安全请求时,我收到响应:

status: 401
"{"Message":"Authorization has been denied for this request."}"

如上所述,如果我删除加号,它就可以正常工作。这似乎是 Wep API 问题而不是 Angular 问题。

我发现encodeUrl和decodeUrl方法不能阻止空格变为加号。我在 C# 代码中尝试了以下将空格切换为加号:

var registerEmail = model.email.Replace(' ', '+');

这用于登录和注册操作。

也许在 Web API 2 的 OAuth 中无法在电子邮件中使用 + ?

最佳答案

这似乎是 ASP.NET Angular 色中的一个错误。我不确定是否有明确的解决方案。但是,目前,在将用户名存储到寄存器之前和登录时,按如下方式对用户名进行编码:

public static class UsernameEncodingService
{
public static string returnEncodedUsername(string email)
{
var emailAsLower = email.ToLowerInvariant();
var encodedEmail = Base64Encode(emailAsLower);
var encodedEmailWithoutEquals = encodedEmail.Replace("=", "213");
var encodedEmailWithoutPlus = encodedEmailWithoutEquals.Replace("+", "214");
return encodedEmailWithoutEquals;
}

private static string Base64Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
}

关于angularjs - 如果电子邮件地址中包含 '+',则 Angular 向 Asp.net Web API 发送访问 token 将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com