Unverified Commit c7b8ce2c authored by ruanshudong's avatar ruanshudong Committed by GitHub
Browse files

Merge pull request #39 from ruanshudong/master

support domain
Showing with 59 additions and 13 deletions
+59 -13
......@@ -68,10 +68,31 @@ preMidware.forEach((midware) => {
let loginConf = require('./config/loginConf.js');
loginConf.ignore = loginConf.ignore.concat(['/static', '/tarsnode.tar.gz', '/favicon.ico', '/pages/server/api/get_locale']);
//web和demo的cookie写在同一个域名下
if(process.env.COOKIE_DOMAIN) {
loginConf.cookieDomain = process.env.COOKIE_DOMAIN
}
if(process.env.USER_CENTER_HOST) {
//存在外部host, 使用外部host代替
loginConf.userCenterUrl = process.env.USER_CENTER_HOST;
}
loginConf.loginUrl = loginConf.baseLoginUrl.replace("http://localhost:3001", loginConf.userCenterUrl);
logger.info('loginUrl:', loginConf.loginUrl, 'userCenterUrl:', loginConf.userCenterUrl, 'cookieDomain', loginConf.cookieDomain);
app.use(async (ctx, next) => {
let host = ctx.host.split(':')[0];
loginConf.loginUrl = loginConf.loginUrl.replace("localhost", host);
loginConf.userCenterUrl = loginConf.userCenterUrl.replace("localhost", host);
if(!process.env.USER_CENTER_HOST) {
//直接用当前host代替, 端口还是保留
let userCenterIp = ctx.host.split(':')[0];
loginConf.userCenterUrl = loginConf.baseUserCenterUrl.replace("localhost", userCenterIp);
loginConf.loginUrl = loginConf.baseLoginUrl.replace("localhost", userCenterIp);
}
await next();
});
......@@ -79,7 +100,6 @@ app.use(async (ctx, next) => {
app.use(loginMidware(loginConf));
// 是否启动 DCache
let dcacheConf = require('./config/dcacheConf.js');
if (dcacheConf.enableDcache) {
app.use(async (ctx, next) => {
......
......@@ -33,6 +33,7 @@ AuthController.isEnableAuth = async (ctx) => {
};
AuthController.userCenter = async(ctx) => {
logger.info('redirect:', loginConf.userCenterUrl);
await ctx.redirect(loginConf.userCenterUrl);
}
......
......@@ -79,6 +79,7 @@ AuthService.checkHasAuth = async (application, serverName, role, uid) => {
};
AuthService.httpCallCheckAuth = async (flag, roles, uid) => {
var rst = await util.jsonRequest.get(getAuthUrl, {
flag: flag,
role: roles,
......
......@@ -14,6 +14,7 @@
* specific language governing permissions and limitations under the License.
*/
let request = require('request-promise-any');
const logger = require('../app/logger');
/**
* 登录配置
......@@ -22,9 +23,11 @@ module.exports = {
enableLogin: true, //是否启用登录验证
defaultLoginUid: 'admin', //若不启用登录验证,默认用户为admin
redirectUrlParamName: 'redirect_url', //跳转到登录url的时带的原url参数名,如:***/login?service=***,默认是service
loginUrl: 'http://localhost:3001/login.html', //登录跳转url(代码中要替换localhost)
baseUserCenterUrl: 'http://localhost:3001', //登录跳转url(代码中要替换localhost)
baseLoginUrl: 'http://localhost:3001/login.html', //登录跳转url(userCenterUrl + loginUrl)
userCenterUrl: '', //登录跳转url(代码中要替换baseUserCenterUrl:localhost)
loginUrl: '', //登录跳转url(baseLoginUrl:localhost)
logoutUrl: '',
userCenterUrl: 'http://localhost:3001/', //登录跳转url(代码中要替换localhost)
logoutredirectUrlParamName: 'url',
ticketCookieName: 'ticket', //cookie中保存ticket信息的cookie名
uidCookieName: 'uid', //cookie中保存用户信息的cookie名
......@@ -54,6 +57,8 @@ async function getUidByTicket(ctx, ticket){
return new Promise((resolve, reject)=>{
try{
request.get('http://localhost:3001/api/getUidByTicket?ticket='+ticket).then(uidInfo=>{
logger.info(ctx.url, 'getUidByTicket', ticket, uidInfo);
uidInfo = JSON.parse(uidInfo);
resolve(uidInfo.data.uid);
}).catch(err=>{
......@@ -74,7 +79,11 @@ async function validate(ctx, uid, ticket){
return new Promise((resolve, reject)=>{
try{
request.get('http://localhost:3001/api/getUidByTicket?ticket='+ticket).then(uidInfo=>{
logger.info(ctx.url, 'validate', ticket, uidInfo);
uidInfo = JSON.parse(uidInfo);
resolve(uidInfo.data.uid === uid);
}).catch(err=>{
reject(err);
......
......@@ -17,6 +17,7 @@ const helmet = require("koa-helmet");
const loginMidware = require('yami-sso-client').koa;
const AuthService = require('./app/service/auth/AuthService');
// const authMidware = require('./app/midware/authMidware');
const logger = require('./app/logger');
const upload = multer({dest: './uploads/'});
......@@ -50,20 +51,33 @@ preMidware.forEach((midware)=>{
let loginConf = require('./config/loginConf.js');
loginConf.ignore =loginConf.ignore.concat(['/static', '/adminPass.html', '/api/adminModifyPass', '/login.html', '/register.html', '/favicon.ico', '/api/get_locale', '/api/login']);
//写入cookie的domain, 方便和web, cookie互通
if(process.env.COOKIE_DOMAIN) {
loginConf.cookieDomain = process.env.COOKIE_DOMAIN;
}
app.use(async (ctx, next) => {
loginConf.loginUrl = loginConf.loginUrl.replace("localhost", ctx.host.split(':')[0]);
// console.log(ctx);
//优先环境变量的host
let userCenterHost = process.env.USER_CENTER_HOST || ctx.host;
loginConf.loginUrl = loginConf.baseLoginUrl.replace("${user-center-host}", userCenterHost);
logger.info('userCenterHost:', userCenterHost, 'host:', ctx.host, 'loginUrl:', loginConf.loginUrl);
var myurl = url.parse(ctx.url);
if(await AuthService.isInit()) {
if((myurl.pathname.lastIndexOf('.html') != -1 || myurl.pathname == '/') && myurl.pathname != '/adminPass.html') {
ctx.redirect('/adminPass.html?redirect_url=' + encodeURIComponent(ctx.url));
ctx.redirect(userCenterHost + '/adminPass.html?redirect_url=' + encodeURIComponent(ctx.url));
return;
}
} else if(myurl.pathname == '/adminPass.html') {
ctx.redirect('/');
ctx.redirect(userCenterHost);
return;
}
......
......@@ -6,10 +6,11 @@ const AuthDao = require('../app/dao/AuthDao');
* 登录配置
*/
module.exports = {
enableLogin: true, //是否启用登录验证
defaultLoginUid: 'admin', //若不启用登录验证,默认用户为admin
loginUrl: 'http://localhost:3001/login.html', //登录跳转url
redirectUrlParamName: 'url', //跳转到登录url的时带的原url参数名,如:***/login?service=***,默认是service
enableLogin: true, //是否启用登录验证
defaultLoginUid: 'admin', //若不启用登录验证,默认用户为admin
baseLoginUrl: '${user-center-host}/login.html', //登录跳转url(替换user-center-host, 得到实际的loginUrl)
loginUrl: '', //登录跳转url, 根据当前请求的host替换成具体的url
redirectUrlParamName: 'url', //跳转到登录url的时带的原url参数名,如:***/login?service=***,默认是service
logoutUrl: '',
logoutredirectUrlParamName: 'url',
ticketCookieName: 'ticket', //cookie中保存ticket信息的cookie名
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment