1. 程式人生 > >js:nodejs中的session(登陸驗證)

js:nodejs中的session(登陸驗證)

登陸 filter action xtend div post方法 獲取參數 password keys

一,下載模塊

npm install cookie-session

本例通過在用戶登陸成功後創建session控制部分頁面的訪問權限

app.js

/**
 * Created by dyb on 2018/1/4.
 */
var express = require(‘express‘);
var db=require(‘./db/db.js‘);
var Db=new db();
var app = express();
var url= require("url");
var cookieSession=require(‘cookie-session‘);//加載cookie-session模塊
var
router = express.Router(); var checkuser=require(‘./action/checkuser.js‘); var p =new checkuser(router,Db); var sessionFilter=require(‘./Filter/sessionFilter.js‘);//加載Filter監聽模塊 var d=new sessionFilter(); app.set(‘view engine‘, ‘ejs‘); app.set(‘views‘, __dirname + ‘/views‘); app.use(express.static( __dirname
+"/public")); var bodyParser = require(‘body-parser‘);//加載此模塊在body中去獲取參數 app.use(bodyParser.urlencoded({extended:false}));//參數方式是字符串 app.use(cookieSession({//設置session name:‘session‘, keys: [‘key‘] })); app.locals.basePath = "http://localhost:3001/"; //監聽路由,有指定文件訪問時過濾 app.get(‘/onland/*‘,function(req,res,next){ d.doFilter(req,res,next); next(); });
/*直接訪問模版需要輸入.ejs後輟*/ app.get(‘/*/*‘, function(req, res,next){ var pagePath= url.parse(req.url).pathname; if(pagePath.indexOf(".ejs")!=-1){ pagePath=pagePath.substr(1); pagePath=pagePath.substr(0,pagePath.length-4); res.render(pagePath); }else { next(); } }); /*var scfk=require(‘./action/scfk.js‘); var p =new scfk(router,Db);*/ //控制路由,如果找不到頁面顯示 app.get(‘*‘,function(req,res){ res.send("<h1>404此頁面已丟失<h1/>") }); app.use("/",router); var server=app.listen(3001,function afterListen(){ console.log("express running ...."); });

Filter/sessionFilter.js

/**
 * Created by dyb on 2018/1/12.
 */

function sessionFilter(){

}
//判斷是否存在session存在則放行,否則重定向到登陸頁面 sessionFilter.prototype.doFilter
=function(req,res,next){ if(req.session.user){ next(); }else{ res.render("pages/login.ejs") } }; module.exports=sessionFilter;

checkUser.js

/**
 * Created by dyb on 2018/1/11.
 */
function checkUser(router,db){

    router.post("/checkUser.do",function(req,res,next){
    //post方法獲得表單中的參數
var username=req.body.userName; var password=req.body.passWord; var csql="select username,password from user where username=? and password=?"; var aa=[username,password]; db.query(csql,aa,function(result){ console.log(result.data[0]); // console.log(result.data[0].username); if(username==""||password==""||result.data[0]==null){ res.render("pages/login.ejs", {args: "sa"}); }else{ if (result.data[0].username == username) { console.log(result.data[0].username); var user={ name:username, pwd:password }; req.session.user=user;//將用戶名和密碼放入session中 res.redirect("onland/default.ejs"); } else { res.render("pages/login.ejs", {args: "ss"}); } } }) }) } module.exports=checkUser;

js:nodejs中的session(登陸驗證)