我正在尝试找出一种合适的身份验证方法,我知道这是GitHub问题页面上的一个敏感话题。
我的身份验证很简单。我将JWT令牌存储在会话中。我将其发送到其他服务器进行批准。如果返回true,则继续进行;如果返回false,则清除会话并将其发送到主页。
在我的server.js
文件中,我有以下内容(请注意,我正在使用nextjs学习的示例并仅添加isAuthenticated
):
function isAuthenticated(req, res, next) {
//checks go here
//if (req.user.authenticated)
// return next();
// IF A USER ISN'T LOGGED IN, THEN REDIRECT THEM SOMEWHERE
res.redirect('/');
}
server.get('/p/:id', isAuthenticated, (req, res) => {
const actualPage = '/post'
const queryParams = { id: req.params.id }
app.render(req, res, actualPage, queryParams)
})
这按设计工作。如果刷新页面/p/123
,它将重定向到/
。但是,如果我通过next/link
href 转到那里,则不会。我相信这是因为此时它没有使用express,而是next的自定义路由。
有没有一种方法可以让我检查每笔next/link
未通过快递的单据,从而确保用户已登录?