login 验证
url
请求方式
响应内容
/login
GET
响应登录页面
/login
POST
对客户端提交数据进行验证
/profile
GET
登录后界面,进入该页面需要验证
1.响应登录页面
判断是否已经登录,如果登录了直接跳转到个人主页
router.get("/login",function(req,rep,next){
isLogin(req,function(err,result){
if(err){
next(err)
return
}
if(result==0){ //cookie修改之后resule为空也需要重新登录
rep.render("login.html")
return
}
rep.redirect("/profile?"+req.cookies.account.name)
})
})
2.用户提交数据验证
验证函数对用户提交的数据进行SQL查询
对查询结果进行判断
若验证成功则进行跳转页面至个人主页
router.post("/login",function(req,rep,next){
account=req.body.name
password=md5(req.body.password)
authenticateAccount(account,password,function(err,result){
if(err){
next(err)
return 0;
}
if(result!=false){
rep.cookie("account",{name:result[0].name,password:result[0].password},{maxAge:86400000*7})
rep.redirect("/profile?"+result[0].name)
}
else{
rep.send("account or password error!")
}
})
})
## 验证函数,回调函数在响应用户请求的时候写好的
function authenticateAccount(account,password,callback){
poolConnection.getConnection(function(err,connection){
if(err){
callback({errCode:"2",
errMessage:"mysql connection error"
})
return 0;
}
//verification
sql='SELECT * FROM `user` WHERE `name`=? and `password`=?'
connection.query(sql,[account,password],function(err,result,fields){
if(err){
callback(
{
errCode:"3",
errMessage:"sql language with error"})
return 0;
}
connection.release();
callback(null,result)
})
})
}
3.个人主页访问权限
只有客户端cookies中存储的用户信息,能够被sql验证才能够访问该页面
否则跳转到登录页面,进行登录操作
router.get("/profile",function(req,rep,next){
isLogin(req,function(err,result){
if(err){
next(err)
return
}
if(result==0){ //cookie修改之后resule为空也需要重新登录
rep.redirect("/login")
return
}
rep.render("profile.html",{user:req.cookies.account.name})
})
})
4.登出操作
当访问
/logout
路由时,直接清空客户端cookies,跳转至主页
router.get("/logout",function(req,rep,next){
rep.clearCookie("account")
rep.redirect("/")
})
Last updated
Was this helpful?