node.js走起--flash篇

289 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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 %>的值出来 显示给用户后,这些变量会被清空。