本文已参与「新人创作礼」活动,一起开启掘金创作之路。
node.js-express-flash-拦截器
1、connect-flash是nodejs中的一个模块,flash是一个暂存器,而且暂存器里面的值使用过一次便被清空,适合用来做网站的提示信息。 2、首先肯定是app.js引入模板
var flash = require('connect-flash')
3、设置flash(成功一大半了)
app.use(flash());
//设置flash
app.use(function(req, res, next){
res.locals.error = req.flash('error') || "";
res.locals.success = req.flash('success') || "";
next();
});
4、可以配合拦截器使用了(给success和error赋值,就可以让它们获得相应的变量)
//拦截器
app.use(function (req, res, next) {
if (req.session.user&&req.session.user!=undefined&&req.originalUrl!="/imgUpdate.html"&&req.originalUrl!="/indexBack.html"&&req.originalUrl!="/picture-add.html"&&req.originalUrl!="/picture-list.html"&&req.originalUrl!="/pixture-show"&&req.originalUrl!="/article-add.html"&&req.originalUrl!="/article-list.html"&&req.originalUrl!="/article-comment.html") { // 判断用户是否登录
next();
} else if(req.session.AccoutBack&&req.session.AccoutBack!=undefined){
next();
}else{
// 解析用户请求的路径
var arr = req.url.split('/');
// console.log("arr.length为是"+arr.length)
// 去除 GET 请求路径上携带的参数
for (var i = 0, length = arr.length; i < 1; i++) {
arr[i] = arr[i].split('?')[0];
}
// 判断请求路径是否为根、登录、注册、登出,如果是不做拦截
if ( arr[1]=="static"||arr[1]=="lib"||arr[1]=="images"||arr[1]=="stylesheets"||arr[1]=="javascripts"||arr[1] == 'loginback.html' || (arr[1] == 'register' || arr[1] == 'login')) {
next();
} else { // 登录拦截
req.session.originalUrl = req.originalUrl ? req.originalUrl : null; // 记录用户原始请求路径
req.flash('error', '登录才能进入网页哦');//用上了
res.redirect('/login'); // 将用户重定向到登录页面
}
}
});
4、部分登录html
<h1 style="color: rgb(6, 237, 245);"><%= error %></h1>
<form action="/login" method="post" id="loginForm">
<div>
<input type="text" name="username" class="username" placeholder="用户名" autocomplete="off"/>
</div>
<div>
<input type="password" name="password" class="password" placeholder="密码" oncontextmenu="return false" onpaste="return false" />
</div>
<button id="submit" type="submit" onclick="login()">登 录</button>
</form>
<a href="register">
<button type="button" class="register-tis" >还有没有账号?</button>
</a>
</div>
<a href="loginback.html" >
<button type="button" class="register-tis">管理员登录</button>
</a>
5、如果输入需要登录的网址,就会展示出<%= error %>的值出来 显示给用户后,这些变量会被清空。