mue*_*ell 4 javascript cookies jwt svelte sveltekit
我正在尝试使用 SvelteKit 实现基于 JWT 的用户会话,并且主要遵循其网站上给出的表单操作的解释: https: //kit.svelte.dev/docs/form-actions
+页面.svelte
<form method="POST" action="?/signIn">
<input type="text" name="name" />
<input type="password" name="password" />
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
+page.server.svelte
import { fail, redirect } from "@sveltejs/kit";
import { signIn } from "$lib/server/database";
export const actions = {
signIn: async ({ cookies, request }) => {
const data = await request.formData();
const name = data.get("name");
const password = data.get("password");
if (!name || !password) {
return fail(400);
}
try {
cookies.set("jwt", await signIn(name, password));
} catch (error) {
return fail(400);
}
throw redirect(303, "/");
},
};
Run Code Online (Sandbox Code Playgroud)
我已经测试了我signIn
在此处导入和使用的方法,并且在使用正确的凭据调用时它确实返回一个令牌。到目前为止,一切都很好。但是,我注意到我在开发人员工具中没有看到任何 cookie。看起来这个cookies.set()
电话根本没有做任何事情。我想将返回的 JWT 设置为 cookie,以便我可以验证我的用户,那么我做错了什么?
如果其他人遇到此问题:虽然 cookie 按使用 Chrome 时的预期设置,但在 Safari 中却没有。我通过将该secure
选项设置为 false 解决了这个问题,尽管 SvelteKit 文档声明这是在本地主机上自动完成的。