一般我们会将帆软系统通过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中时,如果我们再决策系统中将该模板加入模板验证中,当我们没有登录时,会直接进入到登录界面,
- <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>
复制代码 我们不希望手动来登录,希望是先登录,预览模板的时候能直接看到效果。这里就需要用到跨域登录。
上图:
此时我没有登录的时候访问模板,就会进入到登录界面。
当我使用跨域登录后再访问这个模板,就会直接进入模板界面。
实现代码为:
- //登录回调
- function onCrossLoginCallBack(res) {
- console.log("获取验证码结果:" + res);
- document.cookie = "fine_auth_token=" + res.accessToken + "; path=/";
- $("#_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")
- }
- //登录
- function login() {
- var username = $("#_userName1").val();
- var pwd = $("#_pwd1").val();
- var loginUrl = "http://localhost:8075/webroot/decision/login/cross/domain?fine_username="+username+"&fine_password="+pwd+"&validity=-1&encrypted=0&callback=onCrossLoginCallBack"
- $.ajax({
- type: "GET",
- url: loginUrl,
- dataType: "jsonp",
- jsonp: "jsonpCallback",
- });
- }
- //点击事件
- $(document).ready(function () {
- $("#_login1").click(function(){
- login();
- })
- });
复制代码
|