mirror of
https://github.com/dataease/dataease.git
synced 2025-02-25 20:42:55 +08:00
Merge pull request #3469 from dataease/pr@dev@fix_oidc_exit_error
fix(登出): oidc宕机后无法退出系统
This commit is contained in:
commit
5b52ccac22
@ -12,6 +12,7 @@ import io.dataease.auth.service.AuthUserService;
|
|||||||
import io.dataease.auth.util.JWTUtils;
|
import io.dataease.auth.util.JWTUtils;
|
||||||
import io.dataease.auth.util.RsaUtil;
|
import io.dataease.auth.util.RsaUtil;
|
||||||
import io.dataease.commons.constants.SysLogConstants;
|
import io.dataease.commons.constants.SysLogConstants;
|
||||||
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.commons.utils.*;
|
import io.dataease.commons.utils.*;
|
||||||
import io.dataease.controller.sys.request.LdapAddRequest;
|
import io.dataease.controller.sys.request.LdapAddRequest;
|
||||||
import io.dataease.exception.DataEaseException;
|
import io.dataease.exception.DataEaseException;
|
||||||
@ -240,8 +241,13 @@ public class AuthServer implements AuthApi {
|
|||||||
HttpServletRequest request = ServletUtils.request();
|
HttpServletRequest request = ServletUtils.request();
|
||||||
String idToken = request.getHeader("IdToken");
|
String idToken = request.getHeader("IdToken");
|
||||||
if (StringUtils.isNotBlank(idToken)) {
|
if (StringUtils.isNotBlank(idToken)) {
|
||||||
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
|
try {
|
||||||
oidcXpackService.logout(idToken);
|
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
|
||||||
|
oidcXpackService.logout(idToken);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error(e.getMessage(), e);
|
||||||
|
DEException.throwException("oidc_logout_error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,11 +259,16 @@ public class AuthServer implements AuthApi {
|
|||||||
String result = null;
|
String result = null;
|
||||||
Integer defaultLoginType = systemParameterService.defaultLoginType();
|
Integer defaultLoginType = systemParameterService.defaultLoginType();
|
||||||
if (defaultLoginType == 3 && isOpenCas()) {
|
if (defaultLoginType == 3 && isOpenCas()) {
|
||||||
HttpServletRequest request = ServletUtils.request();
|
try {
|
||||||
HttpSession session = request.getSession();
|
HttpServletRequest request = ServletUtils.request();
|
||||||
session.invalidate();
|
HttpSession session = request.getSession();
|
||||||
CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class);
|
session.invalidate();
|
||||||
result = casXpackService.logout();
|
CasXpackService casXpackService = SpringContextUtil.getBean(CasXpackService.class);
|
||||||
|
result = casXpackService.logout();
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error(e.getMessage(), e);
|
||||||
|
DEException.throwException("cas_logout_error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Long userId = JWTUtils.tokenInfoByToken(token).getUserId();
|
Long userId = JWTUtils.tokenInfoByToken(token).getUserId();
|
||||||
|
@ -18,14 +18,16 @@ export function getInfo(token) {
|
|||||||
export function logout() {
|
export function logout() {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/auth/logout',
|
url: '/api/auth/logout',
|
||||||
method: 'post'
|
method: 'post',
|
||||||
|
hideMsg: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deLogout() {
|
export function deLogout() {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/auth/deLogout',
|
url: '/api/auth/deLogout',
|
||||||
method: 'post'
|
method: 'post',
|
||||||
|
hideMsg: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2625,6 +2625,7 @@ export default {
|
|||||||
search_by_keyword: 'Search by keyword',
|
search_by_keyword: 'Search by keyword',
|
||||||
apply_logs: 'Apply logs',
|
apply_logs: 'Apply logs',
|
||||||
app_group_delete_tips: 'Are you sure to delete this application category?',
|
app_group_delete_tips: 'Are you sure to delete this application category?',
|
||||||
|
|
||||||
app_group_delete_content: 'After deletion, all application templates in this category will also be deleted.',
|
app_group_delete_content: 'After deletion, all application templates in this category will also be deleted.',
|
||||||
panel_position: 'Panel position',
|
panel_position: 'Panel position',
|
||||||
panel_name: 'Panel name',
|
panel_name: 'Panel name',
|
||||||
@ -2636,5 +2637,13 @@ export default {
|
|||||||
panel: 'Panel',
|
panel: 'Panel',
|
||||||
log_delete_tips: 'Are you sure to delete this application record?',
|
log_delete_tips: 'Are you sure to delete this application record?',
|
||||||
log_resource_delete_tips: 'Delete related resources (irrecoverable after deletion)'
|
log_resource_delete_tips: 'Delete related resources (irrecoverable after deletion)'
|
||||||
|
|
||||||
|
},
|
||||||
|
<<<<<<< pr@dev@fix_oidc_exit_error
|
||||||
|
app_group_delete_content: 'After deletion, all application templates in this category will also be deleted.'
|
||||||
|
},
|
||||||
|
logout: {
|
||||||
|
oidc_logout_error: 'OIDC failed to exit, do you continue to exit DataEase?',
|
||||||
|
cas_logout_error: 'The CAS service is abnormal, please contact the administrator!'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2626,6 +2626,7 @@ export default {
|
|||||||
search_by_keyword: '通過關鍵字搜索',
|
search_by_keyword: '通過關鍵字搜索',
|
||||||
apply_logs: '應用記錄',
|
apply_logs: '應用記錄',
|
||||||
app_group_delete_tips: '確定刪除該應用分類嗎?',
|
app_group_delete_tips: '確定刪除該應用分類嗎?',
|
||||||
|
|
||||||
app_group_delete_content: '刪除後,該分類中所有的應用模板也將被刪除。',
|
app_group_delete_content: '刪除後,該分類中所有的應用模板也將被刪除。',
|
||||||
panel_position: '儀表板位置',
|
panel_position: '儀表板位置',
|
||||||
panel_name: '儀表板名稱',
|
panel_name: '儀表板名稱',
|
||||||
@ -2637,5 +2638,11 @@ export default {
|
|||||||
panel: '儀表板',
|
panel: '儀表板',
|
||||||
log_delete_tips: '確定刪除該條應用記錄嗎?',
|
log_delete_tips: '確定刪除該條應用記錄嗎?',
|
||||||
log_resource_delete_tips: '刪除相關資源(刪除後不可恢復)'
|
log_resource_delete_tips: '刪除相關資源(刪除後不可恢復)'
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
logout: {
|
||||||
|
oidc_logout_error: 'OIDC退出失敗,是否繼續退出DataEase?',
|
||||||
|
cas_logout_error: 'CAS服務異常,請聯系管理員!'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2626,6 +2626,7 @@ export default {
|
|||||||
search_by_keyword: '通过关键字搜索',
|
search_by_keyword: '通过关键字搜索',
|
||||||
apply_logs: '应用记录',
|
apply_logs: '应用记录',
|
||||||
app_group_delete_tips: '确定删除该应用分类吗?',
|
app_group_delete_tips: '确定删除该应用分类吗?',
|
||||||
|
|
||||||
app_group_delete_content: '删除后,该分类中所有的应用模板也将被删除。',
|
app_group_delete_content: '删除后,该分类中所有的应用模板也将被删除。',
|
||||||
panel_position: '仪表板位置',
|
panel_position: '仪表板位置',
|
||||||
panel_name: '仪表板名称',
|
panel_name: '仪表板名称',
|
||||||
@ -2637,5 +2638,11 @@ export default {
|
|||||||
panel: '仪表板',
|
panel: '仪表板',
|
||||||
log_delete_tips: '确定删除该条应用记录吗?',
|
log_delete_tips: '确定删除该条应用记录吗?',
|
||||||
log_resource_delete_tips: '删除相关资源(删除后不可恢复)'
|
log_resource_delete_tips: '删除相关资源(删除后不可恢复)'
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
logout: {
|
||||||
|
oidc_logout_error: 'OIDC退出失败,是否继续退出DataEase?',
|
||||||
|
cas_logout_error: 'CAS服务异常,请联系管理员!'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import { getLanguage } from '@/lang/index'
|
|||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import router from '@/router'
|
import router from '@/router'
|
||||||
import i18n from '@/lang'
|
import i18n from '@/lang'
|
||||||
|
import { $alert, $confirm } from '@/utils/message'
|
||||||
const getDefaultState = () => {
|
const getDefaultState = () => {
|
||||||
return {
|
return {
|
||||||
token: getToken(),
|
token: getToken(),
|
||||||
@ -146,6 +147,28 @@ const actions = {
|
|||||||
resolve(res.data)
|
resolve(res.data)
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
reject(error)
|
reject(error)
|
||||||
|
if (error?.response?.data?.message) {
|
||||||
|
if (error.response.data.message === ('oidc_logout_error')) {
|
||||||
|
const message = i18n.t('logout.' + error.response.data.message)
|
||||||
|
$confirm(message, () => {
|
||||||
|
removeToken() // must remove token first
|
||||||
|
resetRouter()
|
||||||
|
commit('RESET_STATE')
|
||||||
|
window.location.href = '/'
|
||||||
|
}, {
|
||||||
|
confirmButtonText: i18n.t('commons.confirm')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (error.response.data.message === ('cas_logout_error')) {
|
||||||
|
const message = i18n.t('logout.' + error.response.data.message)
|
||||||
|
$alert(message, () => {
|
||||||
|
|
||||||
|
}, {
|
||||||
|
confirmButtonText: i18n.t('commons.confirm'),
|
||||||
|
showClose: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user