在Express 使用session 做登录控制
来源:互联网 发布:腾讯数据分析 编辑:程序博客网 时间:2024/06/07 14:05
filter中判断是否已经登录如果登录了则过去,否则跳转到登录页
exports.authorize = function(req, res, next) { if (!req.session.user_id) { res.redirect('/admin/login'); } else { next(); }}
在configure中使用session
app.use(express.cookieParser('sctalk admin manager'));app.use(express.session());
路由控制,在需要登录验证的路由上加上filter.authorize
app.get('/admin/login',admin.login);app.get('/admin/logout',admin.logout);app.get('/admin/:action',filter.authorize, function(req, res, next){ if(admin[req.params.action]) { admin[req.params.action](req, res, next); } else { res.status(404); res.end(); }});
最后在登录判断时候添加session即可
exports.dologin = function(req, res,next){ // 校验 这里获取的的是get或者post请求过来的参数去做判断 req.assert('username', "用户名不能为空").notEmpty(); req.assert('password', "密码不能为空").notEmpty(); var errors = req.validationErrors(); if(errors && errors.length>0) { var ermsg = []; for(var i=0;i<errors.length;i++) { ermsg.push(errors[i].msg); } var json={title:'管理后台-- 请先登录',error:ermsg.join("\n")}; res.render('admin/login', json); return; } var userid = req.body.username; var pwd = req.body.password; var ip = req.ip; userbiz.checkUser(userid,pwd,ip,function(err,user){ if(!!err){ var json={title:'管理后台-- 请先登录',error:err}; res.render('admin/login', json); } else{ req.session.user_id = user.user_id; req.session.user = user; res.redirect("/admin/index"); } }); };
以下是在dsp项目中看到同事的写法,值得借鉴
//请求接口时,定义请求规则,去调用定义好的过滤参数方法var reqRule = [];reqRule.push({'filed': 'type', 'rule': {'notEmpty': '订单类型未传', 'isIn': '订单类型不合法'}, 'option': [1, 2]});reqRule.push({'filed': 'id', 'rule': {'notEmpty': '订单id未传', 'isInt': '订单id不合法'}});//dsp中封装过滤参数方法exports.checkReqRuld = function(req, reqRule){ var rsMsg = {'code': 0, 'msg':'ok', 'message':'成功', 'childMessages':[], 'data':[]}; if(reqRule != undefined && reqRule.length>0){ var i = 0, j = 0, filed = null, rule = null, option = null; for (i in reqRule){ filed = reqRule[i].filed; rule = reqRule[i].rule; if(reqRule[i].option != undefined){ option = reqRule[i].option; } for (j in rule){ switch(j){ case 'notEmpty': req.assert(filed, rule[j]).notEmpty(); break; case 'isInt': req.assert(filed, rule[j]).isInt(option); break; case 'is_date': req.assert(filed, rule[j]).isDate(); break; case 'isIn': req.assert(filed, rule[j]).isIn(option); break; case 'isFloat': req.assert(filed, rule[j]).isFloat(option); break; case 'isJSON': req.assert(filed, rule[j]).isJSON(); break; } } } var errors = req.validationErrors(); if(errors && errors.length>0){ rsMsg.code = -100; rsMsg.msg = 'error'; rsMsg.message = '失败'; for (var i = 0; i < errors.length; i++) { rsMsg.childMessages.push(errors[i].msg); break; } } } return rsMsg;}
转载自:http://cnodejs.org/topic/516517a56d38277306c614da
0 0
- 在Express 使用session 做登录控制
- express-session实现登录控制
- express使用session实现登录身份认证
- 在node中借助express-session使用session
- 基于nodejs使用session控制用户登录
- Express + Session 实现登录验证
- nodejs express 做登录拦截
- express中的session使用
- 在Express和Socket.IO中使用session
- 在Express和Socket.IO中使用session,聊天室
- 在nodejs express 中使用session的功能
- 使用Spring-Security进行登录控制的session问题
- php使用session来控制仅有一个账号登录应用
- nodejs Express 中session使用
- nodeJs-express中使用session
- express使用msyql存储session
- Express之Session使用详解
- 系统登录的SESSION控制
- Unity 游戏用XLua的HotFix实现热更原理揭秘
- [Updating] Tinkoff Challenge
- 解析web.xml文件
- android基础(ANR)
- 信息安全工程师 学习笔记(二十)
- 在Express 使用session 做登录控制
- gcov获取程序频谱信息的步骤
- TensorFlow学习(二):变量常量类型
- 从源码角度分析RecyclerView监听滑动到底部失效
- 第一次练手。
- 如何从chrome浏览器获取Xpath
- javac不是内部或外部命令错误解决方法
- 【spring mvc】example of dependency
- 阿里云 访问控制RAM