我正在尝试用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>
+页面.服务器.苗条
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, "/");
},
};
我已经测试了我在这里导入和使用的signIn
方法,当使用正确的凭据调用它时,它确实返回了一个令牌。到目前为止,一切都很好。但是,我注意到我在我的开发人员工具中没有看到任何cookie。看起来cookies.set()
调用什么都不做。我想将返回的JWT设置为cookie,以便验证我的用户,那么我做错了什么呢?
1条答案
按热度按时间utugiqy61#
如果其他人有这个问题:虽然在使用Chrome时设置了cookie,但在Safari中却没有。我通过将
secure
选项设置为false来解决这个问题,尽管SvelteKit文档说明这是在localhost上自动完成的。