将JWT保存在基于浏览器的应用程序中的位置以及如何使用它
我正在尝试在身份验证系统中实现JWT,但我有几个问题。要存储令牌,我可以使用Cookie,但也可以使用localStorage
或sessionStorage
。
哪个是最佳选择?
我读过,JWT保护站点免受CSRF的侵害。但是,假设我将JWT令牌保存在cookie存储中,我无法想象它将如何工作。
那么如何保护它免受CSRF的侵害?
我看到了一些用法示例,如下所示:
curl -v -X POST -H "Authorization: Basic VE01enNFem9FZG9NRERjVEJjbXRBcWJGdTBFYTpYUU9URExINlBBOHJvUHJfSktrTHhUSTNseGNh"
当我从浏览器向服务器发出请求时,该如何实现?我还看到有人在URL中实现了令牌:
http://exmple.com?jwt=token
如果我要通过AJAX发出请求,则可以将header设置为jwt: [token]
,然后可以从header中读取令牌。
我安装了高级REST客户端Google
Chrome扩展程序,并且能够将令牌作为自定义标头传递。向服务器发出GET请求时是否可以通过Javascript设置此标头数据?
回答:
如果要存储它们,则应使用localStorage或sessionStorage(如果可用)或cookie。您还应该使用Authorization标头,但要使用Basicer而不是Basic方案:
curl -v -X POST -H "Authorization: Bearer YOUR_JWT_HERE"
使用JS,您可以使用以下代码:
<script type='text/javascript'>// define vars
var url = 'https://...';
// ajax call
$.ajax({
url: url,
dataType : 'jsonp',
beforeSend : function(xhr) {
// set header if JWT is set
if ($window.sessionStorage.token) {
xhr.setRequestHeader("Authorization", "Bearer " + $window.sessionStorage.token);
}
},
error : function() {
// error handler
},
success: function(data) {
// success handler
}
});
</script>
以上是 将JWT保存在基于浏览器的应用程序中的位置以及如何使用它 的全部内容, 来源链接: utcz.com/qa/424845.html