express重定向的方式很简单,其实vue也可进行页面的重定向,但与vue的页面路由重定向不同,这里讲的是express的页面重定向
这里我们介绍一个新的模块cookie-parser
cookie-parser是对cookie进行封装的一个模块,方便我们对cookies进行操作。
index.js:
var express = require("express")
var globalconf = require("./config")
var allStuContr = require("./web/allStudentController")
// 引入cookie-parser模块
var cookie = require("cookie-parser")
var app = new express()
app.use(express.static(globalconf["page_path"]))
// 使用cookie模块
app.use(cookie())
app.get("/api/*",function(request,response,next){
// 读取cookie,如果cookie中有id值,就放行
if(request.cookies.id){
next()
}else {
// 否则就重定向到login.html页面
response.redirect("/login.html")
}
})
app.get("/api/getAll", allStuContr)
app.listen(globalconf["port"])
这里只是简单进行了重定向的授权,思路是这样子的:
当用户访问了某个页面,如果这个页面符合某个条件,那就执行某个函数,否则就重定向到某个页面。由于前面已经定义过静态文件的路径了,所有重定向的时候不用再设置一次重定向路径,而是直接写html文件名
在express里面,由于设置了”/api/*“,因此就算是访问/api/getAll接口,只要没有写入cookie,都会对页面进行重定向
#
假设有这样一个场景:我们登录账号密码之后,要去访问某个页面,这个页面根据我们是否登录的情况显示不同的内容。但是,这个页面怎么知道我们是否已经登录?
这里我们可以通过给浏览器写入cookie来实现。
这里主要讲一下核心思路,代码过程很简单。
当登录框输入账户密码提交之后,后端可以写一个接口:
index.js接口:
app.get("/login", userLogin)
web层:
<form action="/login" method="get">
<input type="number">
<input type="password">
<input type="submit">
</form>
var stuDao = require("../dao/allStuDao")
var url = require("url")
function userLogin(request, response) {
var prams = url.parse(request.url, ture).query;
stuDao.queryStudent(prams.stu_Num, (result)=>{
if(result && result.length > 0 && result[0].pwd == prams.pwd){
// 写入cookie
response.cookie("id", result[0].id)
response.redirect("/api/getAll")
}else {
response.redirect("LoginError.html")
}
})
}
module.exports = userLogin
由于在上面做过关于cookie的重定向,这里写入cookie,相当于实现了一个单例模式,通过这个开关,轻松实现利用cookie进行自动登录