IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 帆软实现单点登录 -> 正文阅读

[JavaScript知识库]帆软实现单点登录

帆软实现单点登录

前言

  1. 最近接了一个2周就要上线的省级项目, 实属无奈,搞了个单点登录

上代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- import CSS -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>

<body>
    <div id="app">
        <template>
          <div class="wrap" v-if="isError">
            <div class="logo">
              <h1>Error</h1>
                <p>{{msg}}</p>
                <div class="sub">
                <p><a @click="closeWindow">关闭</a></p>
              </div>
            </div>
          </div>
        </template>
    </div>
</body>
<!-- import Vue before Element -->
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<!-- import JavaScript -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<!-- jquery -->
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    new Vue({
        el: '#app',
        data() {
            return {
                isSuccessFlag: false,
                isError: false,
                requestInfo: '',
                msg: '',
                userInfo: {},
                title: '登录中,请稍等。。。'
            }
        },
        created() {
            let u = this.getQueryString('u')
            if (u) {
                const d = eval('(' + u + ')');
                this.userInfo = {
                    fr_username: d.n,
                    fr_password: d.p,
                }
                this.openLoading()
            } else {
                this.isError = true
                this.msg = "参数不完整,请关闭后重新打开。"
            }
        },
        methods: {
            closeWindow() {
                var userAgent = navigator.userAgent;
                if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Chrome") != -1) {
                    location.href = "about:blank";
                } else {
                    window.opener = null;
                    window.open('', '_self');
                }
                window.close();
            },
            getQueryString(name) {
                var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
                var r = window.location.search.substr(1).match(reg);
                if (r != null) return unescape(r[2]);
                return null;
            },

            async openLoading() {
                let loading = this.$loading({
                    lock: true,
                    text: this.title,
                    spinner: 'el-icon-loading',
                    background: 'rgba(0, 0, 0, 0.7)'
                });
                await this.getFrToken()
                if (!this.isSuccessFlag || !this.requestInfo) {
                    loading.close();
                    this.isError = true
                    this.msg = "账号或密码错误!"
                    return;
                }
                this.title = '登录完成,即将进入主页。'
                setTimeout(() => {
                    loading.close();
                    window.location.replace('https://report.zjedu.gov.cn/webroot/decision')
                }, 1000)
            },

            getFrToken() {
                const url = `https://report.zjedu.gov.cn/webroot/decision/login/cross/domain?validity=-1&fine_username=${this.userInfo.fr_username}&fine_password=${this.userInfo.fr_password}`
                $.ajax({
                    type: "get",
                    url: url,
                    async: false,
                    success: (res) => {
                        let d = res.replaceAll('callback', '')
                        let info = d.substr(1, d.length - 2)
                        this.requestInfo = JSON.parse(info)
                        if (this.requestInfo.status == 'success') {
                            this.isSuccessFlag = true
                        } else {
                            // this.$message.error("账号或密码错误!")
                            this.isError = true
                            this.isSuccessFlag = false
                        }
                    },
                    error: (err) => {
                        console.log(err);
                        this.msg = "请求失败"
                        this.isError = true
                        this.isSuccessFlag = false
                    }
                })
            }
        }
    })
</script>
<!DOCTYPE HTML>
<style type="text/css">
    body {}
    
    body {
        background: #f3f3e1;
    }
    
    .wrap {
        margin: 0 auto;
        width: 1000px;
    }
    
    .logo {
        margin-top: 50px;
    }
    
    .logo h1 {
        font-size: 200px;
        color: #8F8E8C;
        text-align: center;
        margin-bottom: 1px;
        text-shadow: 1px 1px 6px #fff;
    }
    
    .logo p {
        color: rgb(228, 146, 162);
        font-size: 17px;
        margin-top: 1px;
        text-align: center;
    }
    
    .logo p span {
        color: lightgreen;
    }
    
    .sub a {
        color: white;
        background: #8F8E8C;
        text-decoration: none;
        padding: 7px 120px;
        font-size: 10px;
        font-weight: bold;
        -webkit-border-radius: 3em;
        -moz-border-radius: .1em;
        -border-radius: .1em;
    }
</style>



</html>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:46:47  更:2022-04-23 10:46:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:50:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码