本文介绍如何在Node.js中实现一个简单的登录拦截器。通过定义过滤器函数检查用户会话和Token状态,并在路由注册时应用该过滤器,实现对未登录用户的自动重定向至登录页面,确保后台管理功能的安全性。
登录拦截器概述
在Web开发中,拦截器应用广泛,例如用于保护站点管理后台。由于并非所有用户都具备访问权限,因此需要实现拦截器机制,并在未授权时友好地引导用户至提示页面。
接下来,我们将演示一种基础实现方式:通过判断用户是否已成功登录,若未登录则自动将请求重定向至登录页面。
过滤器实现
首先,我们需要定义一个用于身份验证的过滤器函数。
exports.checkAuth=function(req, res, next) {
var token = req.signedCookies.token;
if (token && req.session.user && req.session.user.token === token)
next();
else if (token) {
//if invalid token or no session, should rebuild
var authInfo = user.getAuthInfo(token);
if (authInfo && authInfo.isAuth) {
req.session.user = {
userID: authInfo.userID,
userName: authInfo.userName,
isAuth: authInfo.isAuth,
token: token
}
next();
} else
res.redirect('/user/login');
} else
res.redirect('/user/login');
}
路由配置与过滤器应用
随后,在定义路由时引入该过滤器。
module.exports = function (app) {
app.get('/user/blogList',pageAdmin.checkAuth, pageAdmin.pageList);
app.all('/user/post',pageAdmin.checkAuth, pageAdmin.pagePost);
}
上述路由定义接收三个参数:第一个为请求的URL路径,第二个为过滤器函数。若请求满足过滤器条件,则继续执行后续的路由处理函数;若不满足,则不会进入后续的路由定义逻辑。