Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JWT刷新令牌实现_Javascript_Express_Jwt_Refresh Token - Fatal编程技术网

Javascript JWT刷新令牌实现

Javascript JWT刷新令牌实现,javascript,express,jwt,refresh-token,Javascript,Express,Jwt,Refresh Token,我可以将刷新令牌放在访问令牌中,而不是在登录后返回两个令牌吗 当访问令牌过期时,用户需要传递过期的令牌以获得新的访问令牌。当过期令牌到达服务器时,我将从中提取刷新令牌,并检查刷新令牌的过期时间。如果可以,我将返回一个新令牌,其中包含相同的刷新令牌。如果不正常,则用户将注销并需要登录。可以将刷新令牌保存在访问令牌中,然后在刷新时访问它,但我不明白您为什么要这样做?我从未见过有人这样做,所以我会说这可能不是一个好的做法。我会坚持在标题中将它们分开。可以将刷新令牌保存在访问令牌中,然后在刷新时访问它,

我可以将刷新令牌放在访问令牌中,而不是在登录后返回两个令牌吗


当访问令牌过期时,用户需要传递过期的令牌以获得新的访问令牌。当过期令牌到达服务器时,我将从中提取刷新令牌,并检查刷新令牌的过期时间。如果可以,我将返回一个新令牌,其中包含相同的刷新令牌。如果不正常,则用户将注销并需要登录。

可以将刷新令牌保存在访问令牌中,然后在刷新时访问它,但我不明白您为什么要这样做?我从未见过有人这样做,所以我会说这可能不是一个好的做法。我会坚持在标题中将它们分开。

可以将刷新令牌保存在访问令牌中,然后在刷新时访问它,但我不明白您为什么要这样做?我从未见过有人这样做,所以我会说这可能不是一个好的做法。我会坚持在标题中将它们分开。

您可以将刷新令牌与访问令牌组合在一起。但是请记住,如果您不遵循JWT的方式,您的代码将无法与其他程序和API兼容。 此外,在API的每个请求上刷新您的令牌可能是一个很好的实践,而不仅仅是在令牌接近到期时

不确定这是否是最佳实践,但我在我的一个节点服务中这样做: (客户) (服务器)

编辑:

如果您想将两个令牌组合成一个“令牌”,您可能可以执行以下操作:

客户端

const身份验证={
accessToken:“您的accessToken…”,
refreshToken:“您的refreshToken…”,
行动:“getBlogPosts”
};
const data=btoa(身份验证)//这将创建一个ASCII字符串
post('/auth',data)。然后(result=>{
如果(result.status==200){
console.log('auth successful')
}否则{
console.log('无效凭据')
}
})
服务器

api.post('/auth',(请求、响应)=>{
const data=atob(request.data);
if(jwt.verify(data.accessToken){
this.action=data.action;
开关(数据操作){
案例“getBlogPosts”:/…做一些事情
...
...

您可以将刷新令牌与访问令牌相结合。但请记住,如果不遵循JWT的方式,您的代码将与其他程序和API不兼容。 此外,在API的每个请求上刷新您的令牌可能是一个很好的实践,而不仅仅是在令牌接近到期时

不确定这是否是最佳实践,但我在我的一个节点服务中这样做: (客户) (服务器)

编辑:

如果您想将两个令牌组合成一个“令牌”,您可能可以执行以下操作:

客户端

const身份验证={
accessToken:“您的accessToken…”,
refreshToken:“您的refreshToken…”,
行动:“getBlogPosts”
};
const data=btoa(身份验证)//这将创建一个ASCII字符串
post('/auth',data)。然后(result=>{
如果(result.status==200){
console.log('auth successful')
}否则{
console.log('无效凭据')
}
})
服务器

api.post('/auth',(请求、响应)=>{
const data=atob(request.data);
if(jwt.verify(data.accessToken){
this.action=data.action;
开关(数据操作){
案例“getBlogPosts”:/…做一些事情
...
...

我正在开发oauth,我不想通过返回两个令牌来增加android/web developer任务。我想在任何地方都使用一个令牌。如果你从未见过有人这样做,这意味着我可能是第一个这样想的人。我理解你的意思,我认为你高估了将它们分开存储的工作量。您还可以尝试btoa(JSON对象),它生成对象的字符串表示形式,然后向API发送单个“令牌”。这样,您的字符串可以再次解码为JSON表示形式,并且仍然包含所有信息(身份验证令牌、刷新令牌、令牌年龄…)我正在开发oauth,我不想通过返回两个令牌来增加android/web developer任务。我想在任何地方都使用一个令牌。如果你从未见过有人这样做,这意味着我可能是第一个这样想的人。我理解你的意思,我认为你高估了分开存储它们需要做多少工作。你uld还可以尝试btoa(JSON对象),它生成对象的字符串表示形式,然后向API发送单个“令牌”。这样,您的字符串可以再次解码为JSON表示形式,并且仍然包含所有信息(身份验证令牌、刷新令牌、令牌年龄…)