UNPKG

egg-xc-base

Version:

a base framework with egg.js

46 lines (43 loc) 1.71 kB
'use strict'; const Controller = require('egg-xc-base').BaseController; class SsoController extends Controller { async callback(){ this.success([]) } async logout(){ const {ctx} = this const user = ctx.state.user || null; let logoutSuccess = false; ctx.logger.info('logout user',user) if(!!user && !!user.accessToken ){//如果user存在,并且user.accessToken 存在则验证user登录有效性 if(!!ctx.session.passport && !!ctx.session.passport.user){ ctx.session.passport.user = null } const result = await ctx.helper.httpGetSSO(this.app.config.passportDalitek.logoutURL,{ headers : { Authorization : `Bearer ${user.accessToken}` } }) if(result){ logoutSuccess = true } } const user_agent = this.ctx.headers["user-agent"] if( user_agent.startsWith('Mozilla') || user_agent.startsWith('Opera') || user_agent.startsWith('MQQBrowser') || user_agent.startsWith('UCWEB') || user_agent.startsWith('NOKIA5700') || user_agent.startsWith('Openwave') ){//来源于浏览器 await this.ctx.redirect(this.app.config.passportDalitek.loginURL) }else{ if(!logoutSuccess){ throw new this.app.serverError('Invalid grant: access token has expired!') } this.success([]) } } } module.exports = SsoController;