发布时间:2019-07-02编辑:佚名阅读(2181)
node做中间层,需要对http请求做反向代理,但是其中要过滤静态资源
下边是对所有静态资源处理的中间件,包括css js html img font 等
app.use('/css',express.static(path.join(__dirname, 'public')));
我们的项目需要对html 请求做权限验证,那就需要单独的一个中间件去处理html 权限验证,所以只能分开来处理
app.use('/css',express.static(path.join(__dirname, 'public/css'))); // __dirname 当前路径, __filename 当前在执行的js文件路径 app.use('/fonts',express.static(path.join(__dirname, 'public/fonts'))); app.use('/images',express.static(path.join(__dirname, 'public/images'))); app.use('/img',express.static(path.join(__dirname, 'public/img'))); app.use('/js',express.static(path.join(__dirname, 'public/js')));
对html 的处理
if (paths.indexOf('.html') !== -1) { // token 验证成功,第二步 验证访问权限 //response.writeHead(响应状态码,响应头对象): 发送一个响应头给请求。 res.writeHead(200,{'Content-Type':'text/html'}) // 如果url=‘/’ ,读取指定文件下的html文件,渲染到页面。 fs.readFile(path.join(__dirname,'public'+paths),'utf-8',function(err,data){ if(err){ _res.send() } let cryp = new Cryp(); // let crypData = cryp.encrypt(JSON.stringify([jwt._id, req.url])); //加密 let crypData = JSON.stringify([jwt._id, req.url]); // 未加密 request({ url: baseUrl + '/api/auth/checkRequestRight',//请求路径 method: "POST",//请求方式,默认为get body: crypData //post参数字符串 }, function(error, response, body) { console.log('------------141-----------:' + body); if (!error && response.statusCode == 200) { let newData = JSON.parse(cryp.decrypt(body)); if (newData.needLogin) { // 重定向到无权限页面 // _res.redirect(302, ''); _res.send(body); _res.end(); } else { res.end(data); } } else { // 请求失败 // _res.redirect(302, ''); _res.send(response); _res.end(); } }); }); }
其中登录页面是要跳过权限验证的
// 处理登录中间件 app.use(function (req, res, next) { let paths = req.path; console.log(paths); // 登录页面 if(paths.indexOf('login.html') !== -1) { //response.writeHead(响应状态码,响应头对象): 发送一个响应头给请求。 res.writeHead(200,{'Content-Type':'text/html'}) // 如果url=‘/’ ,读取指定文件下的html文件,渲染到页面。 fs.readFile(path.join(__dirname,'public'+paths),'utf-8',function(err,data){ if(err){ res.redirect(404); } res.end(data); }); }else{ // 其他页面 next(); } })
关键字: nodejs express 静态资源管理 express.static
1人
1人
0人
0人