|
@@ -81,10 +81,10 @@
|
|
|
<div class="reloadBtn" @click="getImgCode">看不清?换一张图</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-button :loading="loading" type="primary" class="loginBtn" @click.native.prevent="handleLogin">
|
|
|
+ <el-button :loading="loading" type="primary" class="loginBtn" @click.native.prevent="singleLogin">
|
|
|
登录
|
|
|
</el-button>
|
|
|
- <div class="singleLogin" @click="singleLogin"><i class="el-icon-cloudy" /> 单点登录测试</div>
|
|
|
+ <!-- <div class="singleLogin" @click="singleLogin"><i class="el-icon-cloudy" /> 单点登录测试</div> -->
|
|
|
</el-form>
|
|
|
<!--开始验证表单 end-->
|
|
|
</div>
|
|
@@ -258,21 +258,89 @@ export default {
|
|
|
}
|
|
|
return null; // 如果没有找到 backurl 参数,返回 null
|
|
|
},
|
|
|
- //测试单点登录
|
|
|
+ //登录分路器 start ---------------------------------------->
|
|
|
singleLogin() {
|
|
|
- // 获取当前页面的 URL
|
|
|
- const currentUrl = window.location.href;
|
|
|
+ // 获得当前域名
|
|
|
+ const urlString = window.location.href;
|
|
|
+ // 创建一个URL对象
|
|
|
+ const url = new URL(urlString);
|
|
|
+ // 获取hash部分(即#后面的部分)
|
|
|
+ const hash = url.hash;
|
|
|
+ // 从hash中提取查询参数
|
|
|
+ const hashParams = new URLSearchParams(hash.split('?')[1]);
|
|
|
+ // 获取backurl参数的值
|
|
|
+ const backurl = hashParams.get('backurl');
|
|
|
+ // 获取backurl参数的值
|
|
|
+ const userurl = hashParams.get('userurl');
|
|
|
|
|
|
- const backurlValue = this.getBackUrl(currentUrl);
|
|
|
- if (backurlValue) {
|
|
|
- //console.log('backurl:', backurlValue); // 打印 backurl 的值
|
|
|
- //存在backurl 准备进行单点登录
|
|
|
- //回调地址backurlValue
|
|
|
+ // 解码backurl
|
|
|
+ const decodedBackurl = decodeURIComponent(backurl);
|
|
|
+ const decodedUserurl = decodeURIComponent(userurl);
|
|
|
+
|
|
|
+ // 第一种情况, 不含有backUrl或者userUrl 说明登录者是超级管理员
|
|
|
+ if(hashParams.size==0){
|
|
|
+ console.log("执行超级管理员登录!")
|
|
|
+ this.login(1)
|
|
|
+ }else{
|
|
|
+ // 第二种情况,含有backurl 说明是单点登录
|
|
|
+ if(backurl!=null){
|
|
|
+ console.log("执行单点登录!")
|
|
|
+ const backurlObj = new URL(decodedBackurl);
|
|
|
+ const back_url = backurlObj.hostname;
|
|
|
+ this.login(2)
|
|
|
+
|
|
|
+ }else if(userurl!=null){
|
|
|
+ console.log("执行会员登录!")
|
|
|
+ const backurlObj = new URL(decodedUserurl);
|
|
|
+ const user_url = backurlObj.hostname;
|
|
|
+ this.login(3,user_url)
|
|
|
+
|
|
|
+ }else{
|
|
|
+ this.$message.error("检查登录链接失败,请从正规渠道登录!")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ // 登录分路器 end ---------------------------------------->
|
|
|
+ // 登录 start ---------------------------------------->
|
|
|
+ login(type,url){
|
|
|
+ //超级管理员登录
|
|
|
+ if(type==1){
|
|
|
+ this.$refs.loginForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true
|
|
|
+ this.$store.dispatch('user/login', this.loginForm).then( res => {
|
|
|
+ this.loading = false
|
|
|
+ console.log(res)
|
|
|
+ if(res.code==0){
|
|
|
+ this.$message({
|
|
|
+ type:'error',
|
|
|
+ message:res.message
|
|
|
+ })
|
|
|
+ }else if(res.code==200){
|
|
|
+ console.log("登录成功,将跳转至详情页面!")
|
|
|
+ this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
|
|
|
+ }else if(res.code!=0&&res.code!=200){
|
|
|
+ this.$message({
|
|
|
+ type:'error',
|
|
|
+ message:"用户不存在!"
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else {
|
|
|
+ console.log('表单填写错误!请检查!')
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ //单点登录
|
|
|
+ if(type==2){
|
|
|
+ // 获取当前页面的 URL
|
|
|
+ const currentUrl = window.location.href;
|
|
|
+ const backurlValue = this.getBackUrl(currentUrl);
|
|
|
|
|
|
this.$refs.loginForm.validate(valid => {
|
|
|
- if (valid) {
|
|
|
- //console.log(this.loginForm)
|
|
|
- //开始登录
|
|
|
+ if (valid) {
|
|
|
this.loading = true
|
|
|
this.$store.dispatch('user/login', this.loginForm)
|
|
|
.then( res => {
|
|
@@ -285,8 +353,6 @@ export default {
|
|
|
})
|
|
|
}else if(res.code==200){
|
|
|
console.log("单点登录成功,开始启动跳转!")
|
|
|
- // res.data.token
|
|
|
- // backurlValue
|
|
|
window.location.href = 'http://admindev.bjzxtw.org.cn/auth/back_login.php?backurl=' + backurlValue + '&token='+res.data.token;
|
|
|
|
|
|
}else if(res.code!=0&&res.code!=200){
|
|
@@ -304,12 +370,42 @@ export default {
|
|
|
return false
|
|
|
}
|
|
|
})
|
|
|
- } else {
|
|
|
- //没有backurl 直接走登录接口
|
|
|
- this.handleLogin()
|
|
|
+
|
|
|
+ }
|
|
|
+ //会员登录
|
|
|
+ if(type==3){
|
|
|
+ this.$refs.loginForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ this.loginForm.userurl = url;
|
|
|
+ //console.log(this.loginForm)
|
|
|
+ this.$store.dispatch('user/login', this.loginForm).then( res => {
|
|
|
+ this.loading = false
|
|
|
+ console.log(res)
|
|
|
+ if(res.code==0){
|
|
|
+ this.$message({
|
|
|
+ type:'error',
|
|
|
+ message:res.message
|
|
|
+ })
|
|
|
+ }else if(res.code==200){
|
|
|
+ console.log("登录成功,将跳转至详情页面!")
|
|
|
+ this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
|
|
|
+ }else if(res.code!=0&&res.code!=200){
|
|
|
+ this.$message({
|
|
|
+ type:'error',
|
|
|
+ message:"用户不存在!"
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ }else {
|
|
|
+ console.log('表单填写错误!请检查!')
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
- // 单点登录 end ---------------------------------------->
|
|
|
+ // 登录 end ---------------------------------------->
|
|
|
}
|
|
|
}
|
|
|
</script>
|