之前做的网页,无论学生是否登陆成功,只要请求/student.html都能进入学生页面,并且下载文件做题目,因此有必要进行完善,让没有登陆的学生无法进行学生的操作。
先写两个函数:
var islogin = function(req,res,next){
if(req.session.username==undefined||req.session.type!="student"){
res.end("未登录")
}else{
next()
}
}
var isteacherlogin = function(req,res,next){
if(req.session.username==undefined||req.session.type!="teacher"){
res.end("未登录")
}else{
next()
}
}
一个判断学生登陆,另一个判断老师登录,然后在路由请求的时候传入这个函数,例如:
app.get("/download",islogin,function(req,res){
//此处省略
})
这就保证了如果学生没有登陆就无法下载文件,同样,实现老师的功能也如此:
app.post("/fileupload",isteacherlogin,upload.single('file'),function(req,res){
//此处省略
})
然后是实现退出功能,为学生和老师页面的退出登录键绑定事件:
document.getElementById("exit").onclick = function(){
location.href = "/exit"
}
在app.js中设计路由:
app.get("/exit",function(req,res){
req.session.destroy(()=>{
console.log("销毁完毕")
})
res.end("退出成功")
})
这样登录功能就完善了。