重新加载当前页面以填充会话

Reloading current page to fill session

我遇到登录后会话未填充的问题,但如果我手动刷新页面,它就会出现。 因此,作为一种解决方法,我尝试在登录成功后重新加载我的登录页面,以便会话将填充数据。

如何使用goto?我厌倦了 goto('/') 但它打开了索引页面。 我正在寻找动态的东西,而不是使用页面名称。

有没有人知道如何在不重新加载页面的情况下填充会话?在 server.js coed.

中填写了 session 'sapper.middleware'

因为 session 是一个商店,您可以在浏览器中写入它,只要您仔细匹配它将填充的内容 server-side。这是一个有用的模式:

<script>
  import { stores } from '@sapper/app';

  const { session } = stores();

  async function login() {
    const res = await fetch('auth/login', {
      credentials: 'include',
      method: 'post',
      body: JSON.stringify(whatever)
    });

    if (res.ok) {
      session.update(store => ({
        ...store,
        user: await res.json()
      });
    } else {
      // handle the error
    }
  }
</script>

{#if $session.user}
  <h1>Welcome back {$session.user.name}!</h1>
{:else}
  <button on:click={login}>log in</button>
{/if}

如果您 需要强制重新加载,location.reload() 就可以了。