如果用户没有经过身份验证,我需要重定向到登录页面。我需要类似于route.beforeEach in Vue.js的东西,理想情况是:
sapper.beforeRouteChange((to, from, next) => {
const isAuth = "[some session or token check]";
if (!isAuth) {
next('/login')
}
next()
})我发现了Sapper -保护路线(线路护卫)这个问题,但我认为它不足以满足我的需要。如果令牌或auth在运行时发生更改怎么办?还是被反应性覆盖了?
编辑1:我认为Sapper GitHub上的这问题解决了我的问题。
发布于 2020-04-21 04:21:19
您还可以在authenticationMiddleware.js文件中使用server.js。
这是authenticationMiddleware.js文件
import { get, post } from "./../lib/api";
async function authenticationMiddleware(req, res, next) {
let user = null
const cookies = require('cookie-universal')(req, res);
if (cookies.get('token')) {
try {
user = await get("users/me", null, cookies.get('token'));
} catch (e) {
console.log('err at users', e.toString());
}
req.user = user
req.token = cookies.get('token')
} else {
req.user = {}
req.token = null
cookies.set('token', null)
}
next();
}
export { authenticationMiddleware }例如https://github.com/itswadesh/sapper-ecommerce/blob/master/src/server.js
https://stackoverflow.com/questions/58691278
复制相似问题