42 lines
1.1 KiB
Vue
42 lines
1.1 KiB
Vue
|
|
<template>
|
||
|
|
<view class="cas-callback">
|
||
|
|
<text>正在处理统一认证登录...</text>
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
import appConfig from '@/config'
|
||
|
|
import { casUnifiedLogin } from '@/api/login'
|
||
|
|
|
||
|
|
export default {
|
||
|
|
onLoad(options) {
|
||
|
|
// H5 环境下 options 可携带 ticket 参数
|
||
|
|
const ticket = options?.ticket || (this.$route && this.$route.query && this.$route.query.ticket)
|
||
|
|
if (!ticket) {
|
||
|
|
this.$modal.msgError('CAS 未返回票据')
|
||
|
|
this.$tab.reLaunch('/pages/login')
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
// 使用移动端CAS登录API,因为现在Nginx会根据User-Agent和请求参数自动路由
|
||
|
|
this.$store.dispatch('CasAppLogin', ticket).then(() => {
|
||
|
|
// 拉取用户信息并进入工作台
|
||
|
|
this.$store.dispatch('GetInfo').then(() => {
|
||
|
|
this.$tab.reLaunch('/pages/work/index')
|
||
|
|
}).catch(() => {
|
||
|
|
this.$tab.reLaunch('/pages/work/index')
|
||
|
|
})
|
||
|
|
}).catch(err => {
|
||
|
|
this.$modal.msgError('移动端CAS登录失败:' + (err && err.toString ? err.toString() : '未知错误'))
|
||
|
|
this.$tab.reLaunch('/pages/login')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style>
|
||
|
|
.cas-callback {
|
||
|
|
padding: 40rpx;
|
||
|
|
color: #666;
|
||
|
|
}
|
||
|
|
</style>
|