【发布时间】:2021-12-28 14:35:48
【问题描述】:
作为 sveltekit 的新手,我制作了一个基于 realworldapp 的登录表单,成功登录后会收到 JWT 令牌。
<script context="module">
export async function load({ session }) {
if (session.user) {
return {
status: 302,
redirect: '/'
};
}
return {};
}
</script>
<script>
import { session } from '$app/stores';
import { goto } from '$app/navigation';
import { post } from '$lib/utils.js';
import { fade } from 'svelte/transition';
let username = '';
let password = '';
let errors = null;
let message = '';
let hasError = false
async function submit(event) {
errors = response.errors;
if (response.token) {
$session.access_token = response.token.access_token;
//how to save this token in a cookie?
goto('/profile');
} else {
message= response.message;
hasError = true
setTimeout(() => {hasError=false}, 5000);
}
}
</script>
<form on:submit|preventDefault={submit} >
<h3 class="form-title">Login</h3>
{#if hasError}
<div transition:fade class="err-msg">{message}</div>
{/if}
<input type="text" bind:value={username} placeholder="username">
<input type="password" bind:value={password} placeholder="password">
<input type="submit" value="send">
</form>
它工作正常,我可以在如下响应中获取令牌:
{
message: "successully logged in!"
token: {access_token: 'eyJhbGciOiJIUzI1....'
}
现在,我想知道将令牌保存到 cookie 并检索它的安全且惯用的方法是什么,以便 usr 每次打开浏览器时都不需要进行身份验证?
我查看了官方文档,但找不到任何提示。我也找不到关于它的教程中的工作示例。于是就有了这个问题。
【问题讨论】:
标签: javascript jwt session-cookies svelte sveltekit