将JWT保存在基于浏览器的应用程序中的位置以及如何使用它

我正在尝试在身份验证系统中实现JWT,但我有几个问题。要存储令牌,我可以使用Cookie,但也可以使用localStoragesessionStorage

哪个是最佳选择?

我读过,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

回到顶部