我正在为练习网站编写身份验证机制。我已经成功创建了一个安全令牌,但我希望在登录后在以后的每个请求中发送该令牌,以便对其进行授权。
理想情况下,我希望将其设置为“授权标头”,但是如果用户通过浏览器栏访问URL,我认为不会设置标头。
如何让客户端记住每次访问域时发送授权标头的信息?
此外,理想情况下,我也不想将令牌作为cookie发送。
TL; DR: 我对授权标头的行为有一些疑问:
我是否需要在每个请求中发送授权标头,否则浏览器会自动执行吗?
如果它不是自动的,则将永远不会对浏览器栏中用户输入的GET请求进行身份验证,因为没有任何JavaScript可以附加标题,如果不使用cookie,您将如何解决此问题?(页面重定向?)
如果我需要在每个请求中发送Authorization标头,那么最佳解决方案是什么?
PS
我正在使用没有任何框架的javascript。
答案 0 :(得分:0)
我会尽力回答您的问题。
在每个请求上,如果要验证用户身份,则需要发送授权标头。您可以在此link
我不明白这个问题。例如,如果在浏览器栏中输入www.facebook.com,则将转到Facebook主页。如果用户没有令牌,请显示登录页面,或重定向到www.facebook.com/login。如果用户有令牌,请转到主页并在标题中发送令牌。 Facebook将令牌存储在cookie中,例如,您可以将其存储在Locale存储中。
我希望这能回答您的问题。
答案 1 :(得分:0)
对于Authorization
和Basic
身份验证中的Digest
标头,您的问题的答案是:
“如何让客户端记住每次访问我的域时发送授权标头?”
只要符合RFC2617,客户端就会自动记住并发送授权标头:
客户应假定所有路径的深度等于或大于深度 Request-URI的path字段中的最后一个符号元素也 处于“基本领域”值指定的保护空间内 当前的挑战。客户可以抢先发送 相应的授权标头,其中包含对资源的请求 该空间,而没有收到来自服务器的其他挑战。 (2基本认证方案)
...
客户应记住用户名,密码,随机数,随机数和 与身份验证会话关联的不透明值,用于 在将来的请求中构造Authorization标头 保护空间。 (3.3摘要操作)
“我是否需要在每个请求中发送授权标头,还是浏览器会自动执行?”
浏览器会自动执行。
对于Authorization
身份验证(OAuth 2.0)中的Bearer
标头,我进行了搜索,但在RFC6750中找不到类似的描述