UNPKG

nyx_server

Version:

Node内容发布

124 lines (114 loc) 4.71 kB
var log4js = require('log4js'); var express = require("express"); var authRouter = express.Router(); var http = require("https") var Promise = require("bluebird"); var crypto = require('crypto') var logger = log4js.getLogger('Auth'); authRouter.get("/logout" , function(req , res){ res.header("Access-Control-Allow-Origin", "*"); req.session.userinfo = null; res.json({success:true}); }); authRouter.all("/login" , function(req , res){ res.header("Access-Control-Allow-Origin", "*"); var username = req.body.username; var password = req.body.password; var md5sum = crypto.createHash("md5"); var appkey = 'Wq9Rtd'; var auth2token = md5sum.update(username+"|"+password+"|"+appkey).digest('hex'); //console.log(username , password); var options = { hostname: "sso.staff.ifeng.com", port : 443, path : "/auth2.aspx?userName="+encodeURIComponent(username)+"&password="+encodeURIComponent(password)+"&from=Nyx&fmt=json&token="+encodeURIComponent(auth2token), method: 'get' }; var _req = http.request(options, (_res) => { _res.setEncoding('utf8'); var ret = ""; _res.on('data', (chunk) => { ret += chunk; }); _res.on('end', () => { var s = JSON.parse(ret); var success = s.doc.ret; var message = s.doc.msg["#cdata-section"]; if(success == 1){ //登录成功 //获取用户信息 getUserInfo(username).then(function(userInfo){ var userId = userInfo.sAMAccountName; var userName = userInfo.cn; var department = userInfo.department; var mail = userInfo.mail; var _userInfo = { userId : userId || -1, userName : userName || 'unknow', department : department || 'unknow', mail:mail || 'unknow' } if(username != userId){ logger.info("login error . login id :"+username+" , out id : " + userId+ " , password:"+password); } req.session.userinfo = _userInfo; res.json({success:true , userInfo:_userInfo}); }); }else{ res.json({success:false , message:message}) } }); }); _req.end(); }); authRouter.all('/**', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"); res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); res.header("X-Powered-By",' 3.2.1') if(req.method=="OPTIONS") res.send(200);/*让options请求快速返回*/ else next(); }); function getErrorMessage(ret){ } function getUserInfo(uid) { var tm = Date.now(); var from = "nyxServer"; var key = "dfs90t"; var md5sum = crypto.createHash("md5"); var token4 = md5sum.update(uid + key + tm + from).digest('hex'); var path = "/getUserInfo.aspx?from=nyxServer&tm=" + tm + "&uid=" + uid + "&fmt=json&token4=" + token4; console.log(path) return new Promise(function (resolve, reject) { var options = { hostname: "sso.staff.ifeng.com", port: 443, path: path, method: 'get' }; var _req = http.request(options, (_res) => { _res.setEncoding('utf8'); var ret = ""; _res.on('data', (chunk) => { ret += chunk; }); _res.on('end', () => { var f = new Function("return " + ret); //JSON.parse(ret); var s = f(); return resolve(s); }) }); _req.end(); }) } function getssourlbyDomain() { var tm = Date.now(); var authurl = "http://172.30.23.80:9100/auth/sso"; var backurl = "http://172.30.23.80:9100/auth/sso"; var from = "nyxServer"; var key = "dfs90t"; var md5sum = crypto.createHash("md5"); var token1 = md5sum.update(from + key + tm + authurl + backurl).digest('hex'); var url = "http://sso.staff.ifeng.com/auth/?from=nyxServer&tm=" + tm + "&authurl=" + authurl + "&backurl=" + backurl + "&token1=" + token1; return url } module.exports = authRouter;