帆软报表决策系统跨域登录

楼主
插件开发者
一般我们会将帆软系统通过iframe集成进来,会遇到两个问题,一个是登录,一个是跨域问题,比如我们需要预览一个模板文件:
http://localhost:8075/webroot/decision/view/report?viewlet=%25E7%25AC%25AC%25E4%25B8%2580%25E6%25AC%25A1%25E5%25A1%25AB%25E6%258A%25A5.cpt,当我们集成到iframe中时,如果我们再决策系统中将该模板加入模板验证中,当我们没有登录时,会直接进入到登录界面,
  1. <iframe id="_iframe" src="http://localhost:8075/webroot/decision/view/report?viewlet=%25E7%25AC%25AC%25E4%25B8%2580%25E6%25AC%25A1%25E5%25A1%25AB%25E6%258A%25A5.cpt" width="100%" height="80%"></iframe>
复制代码
我们不希望手动来登录,希望是先登录,预览模板的时候能直接看到效果。这里就需要用到跨域登录。

上图:

此时我没有登录的时候访问模板,就会进入到登录界面。

当我使用跨域登录后再访问这个模板,就会直接进入模板界面。



实现代码为:
  1. //登录回调
  2.         function onCrossLoginCallBack(res) {
  3.             console.log("获取验证码结果:" + res);
  4.             document.cookie = "fine_auth_token=" + res.accessToken + "; path=/";
  5.            $("#_iframe").attr("src","http://localhost:8075/webroot/decision/view/report?viewlet=%25E7%25AC%25AC%25E4%25B8%2580%25E6%25AC%25A1%25E5%25A1%25AB%25E6%258A%25A5.cpt")
  6.         }

  7.         //登录
  8.         function login() {
  9.             var username = $("#_userName1").val();
  10.             var pwd = $("#_pwd1").val();
  11.             var loginUrl = "http://localhost:8075/webroot/decision/login/cross/domain?fine_username="+username+"&fine_password="+pwd+"&validity=-1&encrypted=0&callback=onCrossLoginCallBack"

  12.             $.ajax({
  13.                 type: "GET",
  14.                 url: loginUrl,
  15.                 dataType: "jsonp",
  16.                 jsonp: "jsonpCallback",
  17.             });
  18.         }

  19.         //点击事件
  20.         $(document).ready(function () {
  21.             $("#_login1").click(function(){
  22.                 login();
  23.             })
  24.         });
复制代码


分享扩散:

沙发
发表于 2023-3-28 14:38:17
很棒!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表