我有一个登录表单,如下所示:
<form method="post" name="logForm" onsubmit="onLogin()" action="dashbooard.html">
<label>Email</label>
<input type="text" name="email">
<label>Password</label>
<input type="password" name="pass">
<input type="submit" name="submit" value="Login" >
</form>
现在,当我单击“登录”按钮时,我将通过服务器进行身份验证,并生成access_token
并通过REST API返回给我。
我想将access_token
存储在Cookie中并将该令牌传递给请求。但是,我不知道该怎么做。我很乐意接受这方面的帮助。
答案 0 :(得分:4)
以下是如何使用Cookie来解答有关access_token
:
<强> 1。将cookie存储在客户端上:
document.cookie='access_token=[value]'
其中[value]
是令牌值。
如果我们使用MDN提供的读者/作者库here,我们可以执行以下操作:
docCookies.setItem('access_token', [value]);
我们之所以使用这样的东西而不是标准方式,是为了更容易访问和删除令牌,如下面的#3所示。
<强> 2。将cookie传递回服务器:
我们需要通过标头将access_token
发送回服务器。
这应该自动为您完成,假设服务器在身份验证后发送响应,如Set-Cookie: access_token=[value]
。
如果由于任何原因您遇到与Access-Control-Allow-Origin
有关的问题,请举例说明如何为CORS设置Access-Control
响应标头:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization
第3。删除Cookie:
使用#1中链接的读写器库,我们可以执行以下操作:
docCookies.removeItem('acccess_token');
使用Cookie进行授权时的安全注意事项:
使用Cookie进行授权时,应考虑使用XSS,MITM和CSRF攻击媒介。在基本层面:
HttpOnly
标志,以防止客户端脚本访问cookie。 Secure
标志来保证cookie不会通过未加密的HTTP通道发送。 答案 1 :(得分:0)
试试此代码
document.cookie="username=John Doe";