路由权限控制技巧

下面是个例子:

路由文件 router/user.js

var router = require(“express”).Router();

router.get(“/create”,function(req,res){
res.send(“create user”);
})

module.exports = router;

服务器文件 server.js

var app = require(“express”)();

// 加入路由
app.use(“/user”,require(“./router/user”));

app.listen(3000);

运行服务器后,我们访问,浏览器会出现 “create user” ,如果我们要加入验证,可以修改 user.js 文件:

var router = require(“express”).Router();

router.get(“/create”,function(req,res){
    if(req.query.name === “leo”){
   res.send(“create user”);
}else{
       res.send(“error!”);
}
})

module.exports = router;

这种方式好吗?答案是还可以,不过还有更好的办法,如果我们能做到逻辑和验证彻底分离那就更好了!

我们创建一个 validat.js 验证文件:

var router = require(“express”).Router();

router.get(“/create”,function(req,res,next){
    if(req.query.name === “leo”){
   next();
}else{
       res.send(“error!”);
}
})

module.exports = router;

再修改一下 server.js 文件:

var app = require(“express”)();

// 加入验证器
app.use(“/user”,require(“./validat”));

// 加入路由
app.use(“/user”,require(“./router/user”));

app.listen(3000);

当有请求访问 /user/create 的时候,会先走验证器,验证器如果调用 next() 方法,才会进入 /router/user的路由处理器。