sveltekit - 在 Svelte 中登录重定向后如何返回到同一页面?

标签 sveltekit

我指的是How to redirect to page in SvelteKit?并添加另一个问题:

每次在应用程序中打开页面(即需要经过身份验证的用户的页面)时,我想重定向到/login。我计划在 +layout.ts 中的 load() 函数中使用重定向,以便在每个页面中应用相同的模式。

我的问题:登录成功后如何告诉登录页面重定向到哪里?我可以使用 Referer header 吗?

最佳答案

为此,您可以使用多种技术。

也许,最简单的方法是使用查询字符串。例如,如果您像这样调用您的登录名:

/login?returnTo=<url>

然后您需要读取此参数并将用户重定向回来。请记住,这可能会导致一些不良问题,例如有人伪造恶意 URL。因此,您需要在重定向用户之前清理并确保 URL 有效。同样,该值可以被删除,因此最好有一个后备 URL。

类似的技术是使用本地和 session 存储(如果您在进行重定向时停留在浏览器中)。

如果您提交登录表单,则可以使用隐藏的输入字段来保存返回 URL,然后您可以将其作为服务器中表单数据的一部分进行检索。

最后,另一种不同的方法是使用 cookie 与服务器通信。这样做的好处是允许您使用 HttpOnly cookie(如果您不需要浏览器访问),这样客户端就无法更改该值(我仍然会验证它)。事实上,我正在我现在正在进行的一个项目中使用这种技术。

如果设置了 Referer header ,您可以很好地使用它,但您将需要服务器帮助,因为我认为您无法在客户端中获取它。

关于sveltekit - 在 Svelte 中登录重定向后如何返回到同一页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75910916/

相关文章:

svelte - 如何在 SvelteKit 中以编程方式路由?

server-side-rendering - Sveltekit 和 SSR

typescript - 无法找到从 Y 导入的模块 X - Playwright with Typescript

svelte - 如何将变量传递给 sveltekit 中的组件以作为绑定(bind)值?

node.js - 当后端位于 Docker 容器中时,SvelteKit SSR fetch()

svelte - Rollup 无法解析 vite 中的 alias(@)

redirect - Sveletkit 重定向似乎对我不起作用

javascript - 如何从 (SvelteKit) POST 操作获取文件对象? (类型错误: Cannot read properties of undefined (reading 'byteLength' ))

SvelteKit - .ts 和 .js 的热重载不工作