反馈已提交

网络繁忙

HTML5单点登录

  • 文档创建者:susie
  • 历史版本:26
  • 最近更新:HeroZ 于 2023-02-23
  • 1. 概述

    1.1 问题描述

    用户在 HTML5 端预览报表系统时,默认需要输入用户名密码,如何实现单点登录呢?

    1.2 实现思路

    本文提供两种方法,调用登录接口实现 HTML5 端单点登录:

    1)Ajax 跨域单点登录

    2)iframe 跨域单点登录

    注:实现  HTML5 端单点登录,需要先安装 HTML5 移动端展现插件,详情请参见:HTML5 端访问报表/工程

    2. AJAX 跨域单点登录

    2.1 新建 login.html

    在报表工程%FR_HOME%/webapps/webroot/目录下,新建login.html文件,具体代码如下:

    注1:代码中的 URL、用户名、密码需要根据实际使用情况进行修改。IP 不可写 localhost。

    注2:HTML5 移动端展现插件版本若为 V10.2.0 之前,移动端登录需要带__device__=iPhone&terminal=H5参数

            URL 写法为:http://IP:端口号/webroot/decision/login/cross/domain?__device__=iPhone&terminal=H5

            若未注册移动决策平台功能点,单点登录时将报错11100016,删除__device__=iPhone&terminal=H5参数即可

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; " charset="utf-8">
        <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> 
        <script type="text/javascript">
        function doSubmit() {
                /*-------------------AJAX方式-------------------*/
             jQuery.ajax({
                //h5插件版本若为10.2.0之前,移动端登录需要带__device__=iPhone&terminal=H5参数
    //url: 'http://IP:端口号/webroot/decision/login/cross/domain?__device__=iPhone&terminal=H5', 
    //h5插件版本若为10.2.0之后,移动端登录无需带__device__=iPhone&terminal=H5参数
    //若未注册移动决策平台功能点,单点登录时报错11100016,删除__device__=iPhone&terminal=H5参数即可
                url: 'http://IP:端口号/webroot/decision/login/cross/domain', 
                data: {'fine_username': '用户名', 'fine_password': '密码', 'validity': -1},
                timeout: 5000,
                dataType: 'jsonp', 
                jsonp:"callback", 
                success: function (res) { 
                    // alert('登录成功'); 
                    //var token = res.accessToken;
                    //window.location.href = "http://IP:端口号/webroot/decision/url/mobile?fine_auth_token=" + token;
                    //登录成功后不用再带token参数
                    window.location.href = "http://IP:端口号/webroot/decision/url/mobile";
                   
                }, 
                error: function () { 
                    alert('登录失败'); 
                } 
            });
             
      }
        doSubmit();
     </script>
    </head>
    </html>

    2.2 HTML5 端预览

    HTML5 端输入:http://IP:端口号/webroot/login.html

    1)单点登录成功时,返回工程目录/首页,如下图所示:

    222

    2)单点登录失败时,返回提示「登录失败」,如下图所示:

    222

    3. iframe 跨域单点登录

    3.1 新建 login.html

    在报表工程%FR_HOME%/webapps/webroot/目录下,新建login.html文件,具体代码如下:

    注1:代码中的 URL、用户名、密码需要根据实际使用情况进行修改。IP 不可写 localhost。

    注2:HTML5 移动端展现插件版本为 V10.2.0 之前,移动端登录需要带__device__=iPhone&terminal=H5参数

            URL 写法为:http://IP:端口号/webroot/decision/login/cross/domain?__deviceType__=iPhone&terminal=H5&fine_username=admin&fine_password=123456&validity=-1&callback=callback

            若未注册移动决策平台功能点,单点登录时将报错11100016,删除__device__=iPhone&terminal=H5参数即可

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; " charset="utf-8">
        <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
        <script type="text/javascript">
        function doSubmit() {
            var scr = document.createElement("iframe");
            //将报表验证用户名密码的地址指向此iframe 
    //h5插件版本若为10.2.0之前,移动端登录需要带__device__=iPhone&terminal=H5参数
    //scr.src = "http://IP:端口号/webroot/decision/login/cross/domain?__deviceType__=iPhone&terminal=H5&fine_username=admin&fine_password=123456&validity=-1&callback=callback"; 
    //h5插件版本若为10.2.0之后,移动端登录无需带__device__=iPhone&terminal=H5参数
    //若未注册移动决策平台功能点,单点登录时报错11100016,删除__device__=iPhone&terminal=H5参数即可
            scr.src = "http://IP:端口号/webroot/decision/login/cross/domain?fine_username=用户名&fine_password=密码&validity=-1&callback=callback"; 
            scr.id = "login";
            var token = "";
             
             
            if (scr.attachEvent) 
                { //判断是否为ie浏览器
                  // alert("ie");
                  scr.attachEvent("onload", function(){                    //如果为ie浏览器则页面加载完成后立即执行
                    //原则上下面token不需要传,现在有bug,临时获取登录返回的token拼接到跳转url的后面
                    token = document.getElementById("login").contentWindow.document.body.innerHTML;
                    token = token.substring(token.indexOf("accessToken")+14, token.indexOf("url")-3);
                    window.location="http://IP:端口号/webroot/decision/url/mobile?fine_auth_token=" + token; //直接跳转到数据决策系统
                  });
                } else {
                    // alert("not ie");  
                    scr.onload = function(){              //其他浏览器则重新加载onload事件,进行onload以获得单点服务器的通过    
                     
                      //原则上下面token不需要传,现在有bug,临时获取登录返回的token拼接到跳转url的后面
                      token = document.getElementById("login").contentWindow.document.body.innerHTML;
                      token = token.substring(token.indexOf("accessToken")+14, token.indexOf("url")-3);
                      window.location="http://IP:端口号/webroot/decision/url/mobile?fine_auth_token=" + token; //直接跳转到数据决策系统
                };   
             }   
              
         document.getElementsByTagName("head")[0].appendChild(scr);   //将iframe标签嵌入到head中
             
      }
        doSubmit();
     </script>
    </head>
    </html>

    3.2 HTML5 端预览

    HTML5 端输入:http://IP:端口号/webroot/login.html,单点登录成功时,返回工程目录/首页,如下图所示:

    注:如果使用跨域 iframe 的方式嵌入报表,请关闭「Security Headers」高级设置中的「点击劫持攻击防护功能」,详情请参见:安全防护

    222

    附件列表


    主题: 移动端应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持