visop
Version:
A simple CLI for scaffolding visible operation projects.
74 lines (66 loc) • 2.98 kB
JavaScript
/**
* 配置route
*/
var jwt = require('express-jwt');
// var tokenManager = require('./token_manager');
var setting = require('../config/setting');
var routeMap = require('../config/router.json');
var router = require('express').Router();
var rbac = require('./rbac');
var log = require('./log'); // 加载日志
var sanitize = require('./sanitize.js');
var checkValidate = require('./checkValidate.js');
var _ = require('lodash')
// var checkLogin = require('./checkLogin').checkLogin;
var jwtOptions = {
secret: setting.secretToken,
// credentialsRequired: true,
getToken: function fromHeaderOrQuerystring (req) { //自定义获取前端传过来的token方式
return req.headers['x-access-token']; //获取前端请求头中的x-access-token字段
},
isRevoked: isRevokedCallback
};
function isRevokedCallback(req, payload, done){
console.log("1");
}
module.exports = function(app){
// var router = app.Router;
//遍历路由配置文件,动态生成route
_.forOwn(routeMap, function(obj, key){
var method = obj.method;
var route = obj.route;
var authority = obj.authority;
var action = obj.action;
//根据配置中的权限是否为空来判断是否添加鉴权中间件
try{
var controller = require('../' + obj.controller);
console.log(route, obj.controller, action);
router.get('/'+route, sanitize, checkValidate , controller[action]);
router.post('/'+route, sanitize, checkValidate , controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// 开发模式下不鉴权
// if(global.ENV == 'production' || global.ENV == 'test'){
// // if(authority && ENV == 'production' ){
// if(authority){
// //1、检查是否有token;2、检查token是否有效;3、检查是否有权限访问接口
// router[method](route,
// tokenManager.validateToken,
// rbac(authority),
// sanitize, controller[action]);
// }else{
// router['get'](route,tokenManager.touchToken, sanitize, controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// }
// }else{
// router['get'](route,tokenManager.touchToken, sanitize, controller[action]);
// router['post'](route,tokenManager.touchToken, sanitize, controller[action]);
// }
}catch(err){
log.error('router['+method+
']('+route+', authority:'+
authority+', '+obj.controller+'['+action+']);')
log.error(err);
}
})
app.use(router);
};