Перезагрузка текущей страницы для заполнения сеанса - PullRequest
0 голосов
/ 04 августа 2020

У меня проблема с тем, что сеанс не был заполнен после входа в систему, но если я обновлю sh страницу вручную, это произойдет. Поэтому в качестве обходного пути я пытаюсь перезагрузить страницу входа после успешного входа, чтобы сеанс был заполнен данными.

Как использовать goto? Я устал goto ('/'), но он открывает страницу индекса. Я ищу что-то динамическое c и не использую имя страницы.

А кто-нибудь знает, как заполнить сеанс, не перезагружая страницу? сессия заполнена в 'sapper.middleware' на сервере. js coed.

1 Ответ

0 голосов
/ 05 августа 2020

Поскольку session - это магазин, вы можете писать в него в браузере, если вы внимательно следите за тем, что оно будет заполнено на стороне сервера. Это полезный шаблон:

<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() сделает свое дело.

...