Когда страница отображается, session
заполняется в соответствии с возвращаемым значением функции, которую вы указали здесь:
sapper.middleware({
session: req => ({
token: req.session && req.session.token
})
})
Таким образом, в то время как клиент может иметь до -date token, он не вступит в силу при перезагрузке страницы, если вы каким-либо образом не сохраните токен на сервере таким образом, чтобы промежуточное программное обеспечение сеанса узнало об этом.
Как правило, этого можно добиться, имея сервер маршрут, как routes/auth/token.js
или что-то ...
export function post(req, res) {
req.session.token = req.body.token;
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end();
}
... и отправка токена от клиента:
onMount(async () => {
try {
await client.reAuthenticate();
const auth = await client.get('authentication');
user.set(auth.user);
await fetch(`auth/token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ token })
});
// writing to the session store on the client means
// it's immediately available to the rest of the app,
// without needing to reload the page
$session.token = 'test';
} catch (e) {
} finally {
loaded = true;
}
});