如果用户未通过身份验证,则需要将其重定向到登录页面。理想情况下,我需要Vue.js中的route.beforeEach
这样的内容:
sapper.beforeRouteChange((to, from, next) => {
const isAuth = "[some session or token check]";
if (!isAuth) {
next('/login')
}
next()
})
我发现Sapper - protected routes (route guard)这个问题,但我认为这不足以满足我的需求。如果 token 或身份验证在运行时发生更改怎么办?还是 react 性覆盖了它?
编辑1:我认为Sapper GitHub上的this问题解决了我的问题。
最佳答案
所以我把这段代码放到/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
文件:export default class AuthMiddleware {
static beforeChange(from, to, redirect, params, query) {
if (!AuthMiddleware._isUserAuthenticated()) {
redirect("/login");
}
}
// ~
static _isUserAuthenticated() {
return true; // TODO: Implement
}
}
有关路由钩的更多信息,请参见此处
关于javascript - 更改路线的拍击者事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58691278/