2

我正在使用带有 Basic 类型的 Authorization 标头进行身份验证。我遵循HTTP 基本身份验证规范,该规范指出凭据应遵循此表单 -> userIdentifier:password encoding in base64

我们使用电子邮件作为用户标识符,根据电子邮件格式规范,允许使用冒号(':')字符。

冒号(':') 也是密码中的有效字符。

知道了这一点,我正在寻找一种创造性的方法来解析使用冒号(':')作为用户 ID 和密码之间分隔符的标头的凭据部分。

在这种情况下,它很简单 -> francis@gmail.com:myPassword

这就是复杂的地方-> francis@gmail.com:80:myPasswordWith:Inside

francis@gmail.com:80 是根据电子邮件格式规范的有效电子邮件,即使它不经常使用。那么我在哪里知道在哪里拆分?

我们已决定不接受包含“:”的电子邮件。但是我们想通知用户他的电子邮件无效,我们如何确保我们在正确的位置拆分字符串?

希望我以明确的方式提出了我的问题,请不要犹豫询问更多详细信息

谢谢

4

1 回答 1

0

不要通知用户电子邮件无效。根据 RFC 2617 规则拆分(第一个冒号后的所有内容都是密码),然后尝试进行身份验证,失败并返回通用的“身份验证失败”消息。

john@example.org:80既有密码secret又有john@example.org密码的情况80:secret,似乎不太现实。

如果您要求您的用户注册,您可能会使用其他一些机制(表单?),您可以轻松地将用户名分开并告诉它无效。

于 2012-10-11T16:13:44.573 回答