egg-xc-base
Version:
a base framework with egg.js
46 lines (43 loc) • 1.71 kB
JavaScript
;
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;