Node.js实现简单的登录拦截器

作者:接口漫谈时间:2026-10-24 03:39:50浏览:414

本文介绍如何在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路径,第二个为过滤器函数。若请求满足过滤器条件,则继续执行后续的路由处理函数;若不满足,则不会进入后续的路由定义逻辑。

作者最新文章