javascript SvelteKit:cookie.set()在表单操作中不工作

kmbjn2e3  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(122)

我正在尝试用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,以便验证我的用户,那么我做错了什么呢?

utugiqy6

utugiqy61#

如果其他人有这个问题:虽然在使用Chrome时设置了cookie,但在Safari中却没有。我通过将secure选项设置为false来解决这个问题,尽管SvelteKit文档说明这是在localhost上自动完成的。

相关问题