路线变更的 Sapper 事件

2024-03-30

如果用户未经过身份验证,我需要将用户重定向到登录页面。我需要类似的东西route.beforeEach在 Vue.js 中,理想情况下:

sapper.beforeRouteChange((to, from, next) => {

  const isAuth = "[some session or token check]";

  if (!isAuth) {
    next('/login')
  }

  next()
})

I found Sapper - 受保护的路线(路线守卫) https://stackoverflow.com/questions/58153372/sapper-protected-routes-route-guard这个问题,但我认为这不足以满足我的需求。如果令牌或身份验证在运行时发生变化怎么办?或者它是否被反应性所覆盖?

Edit 1:我觉得this https://github.com/sveltejs/sapper/issues/30#issuecomment-514393015Sapper GitHub 上的问题解决了我的问题。


所以我把这段代码放在/src/routes/_layout.svelte:

  import AuthMiddleware from "../methods/authMiddleware.js";
  import { goto, stores } from '@sapper/app';
  const { page } = stores();

  if (typeof window !== "undefined" && typeof document !== "undefined") {
    page.subscribe(({ path, params, query }) => {
      const from = window.location.pathname;
      const redirect = (href) => { goto(href); }

      AuthMiddleware.beforeChange(from, path, redirect, params, query);
    })
  }

这是authMiddleware.js file:

export default class AuthMiddleware {

  static beforeChange(from, to, redirect, params, query) {

    if (!AuthMiddleware._isUserAuthenticated()) {
      redirect("/login");
    }
  }

  // ~

  static _isUserAuthenticated() {
    return true; // TODO: Implement
  }
}

有关路由钩子的更多信息可以在这里找到

  • https://github.com/sveltejs/sapper/issues/30 https://github.com/sveltejs/sapper/issues/30
  • https://sapper.svelte.dev/docs/#Stores https://sapper.svelte.dev/docs/#Stores
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路线变更的 Sapper 事件 的相关文章

  • JS 代码覆盖率

    我是测试场景的新手 我有一个问题想请你帮忙 例如 如果我有一个从 HTML JS 和 CSS 实现并调用其他 API 的 Web 应用程序 在测试此 Web 应用程序时 在进行功能测试时如何在浏览器中测量 HTML JS CSS 浏览器应用
  • React Native - “this.setState 不是一个函数”试图设置背景颜色动画?

    好吧 我只是想循环视图的背景颜色 在 3 4 种颜色之间渐变 我发现如何在 React Native 中对 ScrollView 的背景颜色进行动画处理 https stackoverflow com questions 50356933
  • getScript 本地加载而不是全局加载?

    根据我的阅读 JQuery 的 getScript 函数使用名为 global eval 的函数在全局上下文中加载脚本文件 是否有特定的设置或方法可以更改此设置 以便它将改为在我调用它的函数中加载 如果我执行以下代码名称 则返回未定义 因为
  • Web SQL 将数据插入多行

    我尝试在 Web SQL 数据库中一次将变量插入多行 但使用我所知的所有方法时 我收到错误 INSERT INTO tab a b VALUES v1 v2 v3 v4 gt gt could not prepare statement 1
  • Javascript:生成具有固定平均值和标准差的随机数

    我的问题 如何在 Javascript 中创建具有给定平均值和标准差 sd 的随机数列表 Example 我想创建一个包含 5 个范围在 1 到 10 之间的随机数的列表 生成的平均值应为 5 标准差应为 2 到目前为止我所做的 我的想法是
  • 通过 HTML 将复杂变量传递给 javascript 的正确方法

    我试图摆脱使用 PHP 的 htmlentities 但我在这里停止了 但后来我想 我不做替换和检查特殊字符 而是只 JSON 整个对象 这提供了一个非常不受欢迎的结果 其中包含大量双引号 那么我应该怎么做呢 我应该为每个图像分配一个数字唯
  • 提交后如何重置表单?

    我有一个简单的表格 假设它需要一个电子邮件地址 提交表单后 消息堆栈会通知用户其地址已成功提交 问题是 提交地址后 带有电子邮件的表单字段仍然包含用户输入的电子邮件地址 我该如何重置该字段 我必须为此使用 JavaScript 吗 谢谢 w
  • 将模板添加为innerHTML 时,Angular 2 绑定/事件不起作用

    我正在尝试创建一个可配置的可重用表 单元格可以配置为具有 html 模板 我正在配置列 Review 拥有带有带有点击事件的锚标记的 html 模板 审核 行 到目前为止 我尝试将此模板作为innerHTML 插入 但所有角度绑定都不起作用
  • NodeJS Express 中每个请求的全局范围

    我有一个基本的快速服务器 需要在每个请求处理期间存储一些全局变量 更深入地说 请求处理涉及许多需要存储在变量中的操作 例如global transaction 当然 如果我使用global范围 每个连接都将共享其事务的信息 并且我需要一个全
  • 我可以在 Express POST 请求中进行 DOM 操作吗?

    我正在使用基本的 HTML CSS 前端 目前有一个登陆页面 上面有一个表单 可将 一些数据发送到数据库 当请求完成后 它期待某种响应 在这种情况下 我正在重新渲染页面 但是 我想用某种感谢消息替换表单 以便用户知道它已正确发送 我尝试过简
  • 在 Javascript 中按日期对数组进行排序

    我在用着sort 按日期排序数组 elements data sort function a b return a date getTime b date getTime 问题是某些元素缺少日期 或日期无效 这导致了这个错误 无法读取属性
  • 从右到左的语言和编程问题

    我正在创建一个网络文本编辑器 它使用我创建的新语言 如 BBcode 这种标记语言将采用阿拉伯语 但我面临这些问题 在所有 IDE 和编辑器中将英语和阿拉伯语文本混合在同一行中确实很困难 因为会发生奇怪的事情 单词和字符的顺序发生变化 使用
  • Rails:包括外部 JavaScript

    我想使用 JavaScript 库 例如 jQuery 插件 我是否使用 Rails 资产管道 或者我应该将其包含在 javascript include tag 中 我有哪些选择以及推荐的做法是什么 您会仅在几个页面上还是在整个应用程序中
  • 是否存在必须在 HTML/JavaScript 中使用早期绑定/内联事件属性的情况

    在我对以下问题的回答中 事件绑定是什么意思 https stackoverflow com q 6329996 144491 我顺便说一下 使用 inline JavaScript Early Binding 来绑定 JavaScript
  • WebRTC、getDisplayMedia() 不捕获远程流中的声音

    我有一个自己的网络应用程序 它基于peerjs库 它是一个视频会议 我正在尝试使用 MediaRecorder 进行录制 但我遇到了一个非常不愉快的情况 捕获我的桌面流的代码如下 let chooseScreen document quer
  • JS 中的 .Jar 文件

    有谁知道如何在 JS 中访问 jar 文件 我已经用 Java 创建了类并作为 jar 文件导入 我想从 JS 文件访问该类 大家好 我感谢你们所有人 我尝试在 Firefox XUL 中使用 JS 列出文件夹中的文件 但我做不到 然后我决
  • Mocha 测试对原生 ES6 模块的“esm”支持

    有一个很棒的帖子 使用 Mocha 和 esm 测试原生 ES 模块 https web archive org web 20220318155753 https alxgbsn co uk 2019 02 22 testing nativ
  • 添加 sigma.js 导航按钮

    我是 javascript 和 sigma js 的新手 我试图让导航按钮在画布中向上 向下 向左 向右滚动 就像发现的那样here http jcml fr jacomyal osdc2012 demo 到目前为止 我有一个简单的例子 我
  • 为什么 useState 会导致组件在每次更新时渲染两次?

    我这里有一段简单的代码 import React useState from react import styles css export default function App const number setNumber useSta
  • Angular 计算 HTML 中的百分比

    我试图在 HTML 中显示百分比值 如下所示 td myvalue totalvalue 100 td 它可以工作 但有时它会给出一个很长的小数 这看起来很奇怪 如何四舍五入到小数点后两位 有更好的方法吗 您可以使用过滤器 如下所示杰夫约翰

随机推荐

  • 在 Visual Studio 2010 中链接 boost 库时出现问题。

    我根据找到的指南编译了我的boost库here https stackoverflow com questions 2629421 how to use boost in visual studio 2010并尝试使用 boost 文件系统
  • 通过 Firefox WebDriver 处理“下载”窗口

    我正在尝试 Firefox 的 WebDriver 我想问一下是否可以处理 下载 窗口 接受或拒绝传入的下载请求 例如一段简单的代码 import selenium firefox webdriver dr selenium firefox
  • 如何获得 Podio APP 响应细节级别 mini、micro 或 Short?

    在 Podio API 文档的许多地方 您似乎可以指定响应中的详细程度 完整 短 迷你 微 例如在 Get App 调用中https developers podio com doc applications get app 22349 h
  • 如何从颠倒的钟形曲线中采样

    我可以使用下面的代码生成均匀分布的数字 runif 1 min 10 max 20 如何对更频繁地接近最小和最大边界的随机生成的数字进行采样 又名 颠倒的钟形曲线 钟形曲线通常是高斯曲线 这意味着它没有最小值和最大值 你可以尝试贝塔分布 h
  • 在 Angular (4) 应用程序组件中包含外部 css

    So from 将外部 css 样式加载到 Angular 2 组件中 https stackoverflow com questions 34542143 load external css style into angular 2 co
  • 在 act 回调中包装异步 moxios 调用

    我正在尝试使用钩子测试反应功能组件 useEffect 挂钩调用第三方 API 然后在返回时调用 setState 我已经进行了测试 但不断收到警告 表明组件的更新未包含在 act 中 我遇到的问题是期望位于 moxios wait 承诺内
  • “游戏中心无法识别该游戏”错误

    我正在努力度过游戏中心集成工作的第一阶段 到目前为止我已经做到了 我创建了一个新的 干净的应用程序 在应用程序委托中添加了 GameKit 标头和基本的authenticateWithCompletionHandler 方法 在模拟器中启动
  • Lua:C++模块无法互相引用,未定义的符号

    我创建了两个模块 共享对象 CPU 和 SaveState 作为模拟器的一部分 两者都独立编译成 so 单独文件 并在运行时由 Lua 脚本使用 require 加载 IE SaveState require SaveState CPU r
  • Git 无法解释地更改单个文件的权限

    我是唯一参与这个 git 项目的人 每次我在本地 Ubuntu 存储库中编辑文件 然后推送到 Bitbucket 并拉取到我的生产存储库时 git 都会将编辑的文件更改为 rwxrwxr x 775 Apache 不喜欢这样 本地系统 Ub
  • 从 Python 设置 gzip 时间戳

    我对使用 Python 压缩数据感兴趣gzip模块 碰巧我希望压缩输出是确定性的 因为这对于一般事物来说通常是一个非常方便的属性 如果某些不支持 gzip 的进程要寻找输出中的更改 或者如果输出将被加密签名 不幸的是 每次的输出都不同 据我
  • 是否可以在Android中使用phoneGap在SD卡中加载/创建数据库?

    如何使用phoneGap 或任何与phoneGap 配合使用的插件从sdcard 加载现有的 db 文件或在sdcard 中创建数据库 我想将 db 文件保存在 SD 卡中 因为数据库的大小可能会增加 我面临同样的问题 但经过长时间彻底阅读
  • 为什么内存使用量比我在 Kubernetes 节点中设置的要大?

    我仅将资源分配给 1 个 pod 内存为 650MB 30 对于其他内置 pod 限制内存仅为 69 然而 在 Pod 处理过程中 Pod 的使用量在 650MB 以内 但 Node 的总体使用率为 94 为什么会出现这种情况 因为它的上限
  • Wordpress 中包裹图像的 P 标签和包裹文本节点的 P 标签有何区别?

    我需要一个好的解决方案来设计风格 p WordPress 帖子中的标签不同 更具体地说 我需要区分段落和图像 WordPress 只是将所有新行换行 p p tags 以下是一些可能性 全部剥离 p p 标签并添加 p p 适当的标签 在文
  • 使用 Webpack 和 Uglify 删除 console.logs

    我正在尝试删除console logs使用 Webpack 的 Uglify 插件 但似乎与 Webpack 捆绑在一起的 Uglify 插件没有这个选项 文档中没有提到 我正在从 webpack 初始化 uglify 如下所示 new w
  • 即使增加超时后,stackexchange.redis 也会抛出超时?

    尝试从缓存中删除时出现以下错误 Timeout performing DEL test com inst 0 mgr ExecuteSelect err never queue 0 qu 0 qs 0 qc 0 wr 0 wq 0 in 0
  • Mysql 错误 #1305 FUNCTION db.sys_exec 不存在

    我正在使用 phpmyadmin 我在 mysql 中使用触发器 它在表中插入内容后调用 php 脚本 我的触发器包含这个 DECLARE result INT SET result select sys exec C xampp php
  • 在 JavaScript 中同步使用 setTimeout

    我有以下场景 setTimeout alert this alert is timedout and should be the first 5000 alert this should be the second one 我需要后面的代码
  • 从字符串sql中提取第一个数字值

    我找到了许多答案 它们为我指明了我想要的正确道路 例如this https stackoverflow com a 26732633 4027761 但是 如果我有一个像 此附件将是 22 英寸 x 15 英寸长 这样的字符串 我会想要获取
  • 如何在node.js中为相同的两个应用程序分离redis数据库

    我有两个相同的应用程序 一个用于演示 一个用于开发 并且我使用 redis 数据库来存储键值 我如何为这两个不同的应用程序分离 redis 数据库 我使用 Node js 作为 Redis 客户端 我用这个https github com
  • 路线变更的 Sapper 事件

    如果用户未经过身份验证 我需要将用户重定向到登录页面 我需要类似的东西route beforeEach在 Vue js 中 理想情况下 sapper beforeRouteChange to from next gt const isAut