正在显示
3 个修改的文件
包含
37 行增加
和
6 行删除
| @@ -50,6 +50,7 @@ exports = module.exports = function () { | @@ -50,6 +50,7 @@ exports = module.exports = function () { | ||
| 50 | proxy: { | 50 | proxy: { |
| 51 | target: 'http://47.110.158.110:20000', | 51 | target: 'http://47.110.158.110:20000', |
| 52 | apiRouteRegexp: '/api', | 52 | apiRouteRegexp: '/api', |
| 53 | + ignoreRouters: ['/api/uaa/v1/auth/tokens'], | ||
| 53 | authUrl: '/uaa/v1/auth/tokens', | 54 | authUrl: '/uaa/v1/auth/tokens', |
| 54 | refreshUrl: '/uaa/v1/auth/tokens', | 55 | refreshUrl: '/uaa/v1/auth/tokens', |
| 55 | signOutUrl: '/signOut', | 56 | signOutUrl: '/signOut', |
| 1 | //代理RESTful API | 1 | //代理RESTful API |
| 2 | var express = require('express'); | 2 | var express = require('express'); |
| 3 | -exports = module.exports = function (settings, proxy) { | 3 | +exports = module.exports = function (settings, proxy, logger) { |
| 4 | 4 | ||
| 5 | var app = this; | 5 | var app = this; |
| 6 | var router = express.Router(); | 6 | var router = express.Router(); |
| 7 | + var checkAuth = function (req) { | ||
| 8 | + var flag = true, ignore = false; | ||
| 9 | + if (settings.proxy && settings.proxy.ignoreRouters) { | ||
| 10 | + settings.proxy.ignoreRouters.map(function (ignoreR, i) { | ||
| 11 | + ignore = req.originalUrl.indexOf(ignoreR) != -1; | ||
| 12 | + }); | ||
| 13 | + } | ||
| 14 | + if (ignore) { | ||
| 15 | + flag = true | ||
| 16 | + } else if (req.session && req.session.token) { | ||
| 17 | + var token = {}; | ||
| 18 | + try { | ||
| 19 | + token = JSON.parse(req.session.token); | ||
| 20 | + } catch (error) { | ||
| 21 | + flag = false; | ||
| 22 | + logger.error("token 字符串不能被解析", error); | ||
| 23 | + } | ||
| 24 | + if (token && token.access_token && token.refresh_token) | ||
| 25 | + flag = true; | ||
| 26 | + } else { | ||
| 27 | + logger.debug("token 不存在"); | ||
| 28 | + flag = false; | ||
| 29 | + } | ||
| 30 | + return flag; | ||
| 31 | + } | ||
| 32 | + | ||
| 7 | if (settings.proxy) { | 33 | if (settings.proxy) { |
| 8 | app.use(settings.proxy.apiRouteRegexp, router); | 34 | app.use(settings.proxy.apiRouteRegexp, router); |
| 9 | router.all('*', function (req, res, next) { | 35 | router.all('*', function (req, res, next) { |
| 10 | - proxy.web(req, res, next); | 36 | + if (checkAuth(req)) |
| 37 | + proxy.web(req, res, next); | ||
| 38 | + else | ||
| 39 | + res.redirect(settings.proxy.signInUrl); | ||
| 11 | }); | 40 | }); |
| 12 | } | 41 | } |
| 13 | }; | 42 | }; |
| 14 | 43 | ||
| 15 | -exports['@require'] = ['igloo/settings', 'igloo/restler']; | 44 | +exports['@require'] = ['igloo/settings', 'igloo/restler', 'igloo/logger']; |
| @@ -77,7 +77,6 @@ exports = module.exports = function (logger, settings) { | @@ -77,7 +77,6 @@ exports = module.exports = function (logger, settings) { | ||
| 77 | if (err) | 77 | if (err) |
| 78 | logger.error(err); | 78 | logger.error(err); |
| 79 | else { | 79 | else { |
| 80 | - | ||
| 81 | res.send(data); | 80 | res.send(data); |
| 82 | } | 81 | } |
| 83 | }) | 82 | }) |
| @@ -90,6 +89,8 @@ exports = module.exports = function (logger, settings) { | @@ -90,6 +89,8 @@ exports = module.exports = function (logger, settings) { | ||
| 90 | if (response.statusCode === 401) { | 89 | if (response.statusCode === 401) { |
| 91 | refreshToken(req, res, next, reqOption); | 90 | refreshToken(req, res, next, reqOption); |
| 92 | } else { | 91 | } else { |
| 92 | + var options = reqOption.options || {}; | ||
| 93 | + logger.error({ url: reqOption.url, method: options.method, headers: options.headers, query: options.query, data: JSON.parse(options.data), backdata: data }); | ||
| 93 | res.send(data); | 94 | res.send(data); |
| 94 | } | 95 | } |
| 95 | } | 96 | } |
| @@ -123,11 +124,11 @@ exports = module.exports = function (logger, settings) { | @@ -123,11 +124,11 @@ exports = module.exports = function (logger, settings) { | ||
| 123 | handleFail(data, response, req, res, next, { url, options }); | 124 | handleFail(data, response, req, res, next, { url, options }); |
| 124 | }) | 125 | }) |
| 125 | .on('error', function (err, response) { | 126 | .on('error', function (err, response) { |
| 126 | - logger.error(err); | 127 | + logger.error({ 'message': '发生错误', url: url, method: options.method, headers: options.headers, query: options.query, data: JSON.parse(options.data), error: err }); |
| 127 | res.send(err); | 128 | res.send(err); |
| 128 | }) | 129 | }) |
| 129 | .on('timeout', function (ms) { | 130 | .on('timeout', function (ms) { |
| 130 | - logger.error('timeout', ms); | 131 | + logger.error({ 'message': '请求超时', url: url, method: options.method, headers: options.headers, query: options.query, data: JSON.parse(options.data), timeout: ms }); |
| 131 | res.send({ 'message': '请求超时' }); | 132 | res.send({ 'message': '请求超时' }); |
| 132 | }); | 133 | }); |
| 133 | } | 134 | } |
请
注册
或
登录
后发表评论