Jwt 令牌在端点生成,但未到达页面
我想用Svelte/Kit和JWT创建一个网站。 我在互联网上找到了一些说明,例如: 苗条JWT认证 使用Cookies的SvelteKit会话身份验证 但不幸的是,没有关于苗条套装和JWT的说明。所以我自己试过了 令牌在端点生成,但未到达页面(或不可调用)。我怀疑标题中的某些设置是错误的,但无法找出错误所在。这是我高度简化的测试环境: (1) 我从index.svelte页面调用endpoint login.js。对于测试,我省略了检查电子邮件和密码,并将JWT发送回。数据到了,但我没有看到JWT (2) JWT应该被发送到另一个端点。最好的方法是什么 “页面”Jwt 令牌在端点生成,但未到达页面,jwt,svelte,sveltekit,Jwt,Svelte,Sveltekit,我想用Svelte/Kit和JWT创建一个网站。 我在互联网上找到了一些说明,例如: 苗条JWT认证 使用Cookies的SvelteKit会话身份验证 但不幸的是,没有关于苗条套装和JWT的说明。所以我自己试过了 令牌在端点生成,但未到达页面(或不可调用)。我怀疑标题中的某些设置是错误的,但无法找出错误所在。这是我高度简化的测试环境: (1) 我从index.svelte页面调用endpoint login.js。对于测试,我省略了检查电子邮件和密码,并将JWT发送回。数据到了,但我没有看到J
索引.svelte
(简化):
让电子邮件=”,密码=”;
const doLogin=async()=>{
const response=wait fetch(“/auth/login”{
方法:“POST”,
标题:{
“内容类型”:“应用程序/json”,
},
凭据:“包括”,
正文:JSON.stringify({
电子邮件,
密码
})
});
如果(response.status==200){
常量{done,value}=
等待响应。body.getReader().read();
等待console.log(“完成,value=,完成,
parse(新的TextDecoder(“utf-8”).decode(value));
wait console.log(“headers=”,response.headers);
}
}
欢迎来到MyAuth
提交
“endpoint”login.js(简化):
从“jsonwebtoken”导入jwt;
导出功能post(请求、上下文){
const token=jwt.sign({
数据:{text:“test”},
“最高机密”,
});
常数响应={
现状:200,
标题:{
“内容类型”:“应用程序/json”,
'Authorization':'Bearer${token}`,
},
正文:{
密码OK:是的,
}
};
返回响应;
}
控制台显示:
done, value= false {passwordOk: true}
index.svelte:59 headers= Headers {}
index.svelte:44 Fetch finished loading: POST "http://localhost:3000/auth/login".
doLogin @ index.svelte:44
我认为您混淆了认证的两个主要部分:
Authorization:Bearer${token}
通常从(浏览器)客户端发送到服务器,请求访问受保护的内容。所以现在,您的服务器正在请求客户端的许可。这没有道理
相反,登录端点应通过以下方式发送令牌:
头在登录端点中设置Cookie
- 响应的
(其中body
为)passwordOk
设置Cookie
使浏览器在以后的每个请求中将此值作为Cookie发送。服务器可以在提供受保护内容之前检查此cookie值。这可能更安全,因为您可以发送仅HTTP的cookie
如果在登录响应的主体中发送令牌,则客户端应在未来的请求中使用
Authorization:Bearer${token}
头发送令牌。然后,服务器可以在提供受保护的内容之前检查此标题。非常感谢您的解释。是的,我现在明白了,第一个测试程序已经按预期运行了。