本文已参与「新人创作礼」活动,一起开启掘金创作之路。
node.js-express-flash-拦截器
1、connect-flash是nodejs中的一个模块,flash是一个暂存器,而且暂存器里面的值使用过一次便被清空,适合用来做网站的提示信息。 2、首先肯定是app.js引入模板 js var flash = require('connect-flash')
3、设置flash(成功一大半了)
js 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赋值,就可以让它们获得相应的变量)
```js //拦截器
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
```html
<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>