sveltejs | Unsorted

Telegram-канал sveltejs - Svelte [svɛlt] - All about Svelte JavaScript framework

1680

📮Тест на вход придёт в личку 💥Без никнейма не впустим Правила: https://t.me/sveltejs/764 Доки: https://svelte.dev/docs Паблик: @sveltejs_public Вакансии: @sveltejs_jobs VK: https://vk.com/sveltejs_ru Админы: @stalkerg, @misharodshtein

Subscribe to a channel

Svelte [svɛlt] - All about Svelte JavaScript framework

Сегодняшняя фича это новый модуль svelte/reactivity/window экспортирующий реактивные обёртки баиндингов <svelte:window>:

<script>
let width = $state();
let height = $state();
</script>

<svelte:window
bind:innerWidth={width}
bind:innerHeight={height}
/>

<p>{width}x{height}</p>

⬇️🪄⬇️
<script>
import { innerWidth, innerHeight } from 'svelte/reactivity/window';
</script>

<p>{innerWidth.current}x{innerHeight.current}</p>

Дока

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Ну и выше я кинул полную реализацию аунтефикации по svelte way

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

/channel/promaidens/31

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

https://thecopenhagenbook.com/sessions

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

То есть любой xss скриптец сможет утащить токен сессии?

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Не проще ли сделать серверный токен не server?

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Да, у меня все так
Только layout+server+js не вызывается при каждой навигации

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Посмотрите как это реализовано в Realworld:


Логин

https://github.com/sveltejs/realworld/blob/master/src/routes/login/%2Bpage.server.js

Хук ставящий locals

https://github.com/sveltejs/realworld/blob/master/src/hooks.server.js

Locals → data

https://github.com/sveltejs/realworld/blob/master/src/routes/%2Blayout.server.js

Logout

https://github.com/sveltejs/realworld/blob/master/src/routes/settings/%2Bpage.server.js

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

В общем с таким подходом все получилось и работает
В клиентском +layout.svelte использую примерно такой код:


afterNavigate(() => {
const serversideAuthorized =
Cookies.get('websiteurl.authorized') !== undefined
const clientsideAuthorized = $authorized
if (serversideAuthorized !== clientsideAuthorized) {
syncAuthState()
}
})

const syncAuthState = async () => {
const request = await fetch('/api/me')
if (request.ok) {
const response = (await request.json()) as MeResponse
$user = response.authorizedUser
}
}

На сервере при авторизации ставлю httponly куку websiteurl.session-token и websiteurl.authorized=true, при выходе удаляю обе куки

$authorized это стор: derived(user, ($user) => $user !== null)
а $user это уже стор с данными пользователя

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

А как ты запросы делаешь на бэк?

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Но я не использую fetch нигде, кроме как как раз для синхронизации клиентского состояния с серверным через эту куку

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Когда юзаешь свелтовый fetch, можно отслеживать каждый запрос через handlefetch в hooks.server.ts

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Да я так и делаю, но вопрос в том как мне обновлять в этом сторе данные

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Всё зависит от реализации. В примере выше в куке хранится токен пользователя. Удаляешь токен в экшене формы — лишаешь пользователя доступа

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Корневой layout запускается один раз.

При выходе нужно чистить куку, locals и редиректить если нужно

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Ладно, не хочу начинать спорить за авторизацию, за совет как правильно сделать в свелте в любом случае благодарю

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Еще раз озвучу проблему: данные о пользователе передаются из корневного layout.server.ts, корневой layout.server.ts при выходе из аккаунта и редиректе на главную не вызывается, что получается? Получается при редиректе на главную у нас на клиенте после софт навигации в сторе остается юзер

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Нет, кука только для сервера

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Нет, http only cookie это мастхев

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Раз уж по другому не выходит

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Ну есть решение лучше?

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Это скорее звучит как костыль))

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

А мне уже знаком этот подход с двумя куками, одна для сервера, другая для клиента, все ок

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Только через actions и load,у меня задача чтобы все работало без включенного js, progressive enhancement там и так далее

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Я попробовал добавить depends в корневой лейаут и потом при выходе вызывать invalidate() но так не работает, надо чтобы invalidate вызывался с клиента

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Он перезапускает всю цепочку

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Не буду же я в каждый load каждого page добавлять возвращение юзера
Поэтому добавил это в корневой лейаут

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Я завожу authStore для состояния пользователя, только главное не расшарить его на сервере

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Ну то есть ставим одну httponly куку с токеном сессии и другую обезличенную куку без httponly

Читать полностью…

Svelte [svɛlt] - All about Svelte JavaScript framework

Просто интересно у магистров свелта узнать как правильно решается это

Читать полностью…
Subscribe to a channel