系统集成方案(一).NET集成方案

NET系统集成有自己独立的登录验证方式。比如,跟报表集成时,不需要再使用报表内置的登录界面,只需要将报表默认的参数用户名fr_username和密码fr_password发送给报表系统,触发一下报表验证方式就可以实现单点登录了,以下用FineReport的.NET跨域单点登录案例简单介绍一下。

公司主营业务:网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出松江免费做网站回馈大家。

系统本身有独立的登录验证方式如下图:

系统集成方案(一).NET集成方案 

1.触发报表验证方法

报表集成时不需要再一次进行登录验证,只需在项目里面的登录验证页面内触发一下报表方法,如下js方法:

function doSubmit() {    
         varusername =document.getElementById("username").value;  //此处是用来提取用户名和密码
         varpassword =document.getElementById("userPwd").value;
        varscr = document.createElement("iframe");      //创建iframe  
         vardt=new Date();
       scr.src ="/WebReport/ReportServer?op=fs_load&cmd=sso&username=" +username + "&password=" +password+"&time="+dt.toString();  //将报表验证用户名密码的地址指向此iframe  
       document.getElementsByTagName("head")[0].appendChild(scr);   //将iframe标签嵌入到head中  
    }

注:此处的单点登录是登录报表管理平台,而不是FineReport的数据决策系统,如果需要与数据决策系统做单点登录,需将

scr.src = "http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso&username="+ username + "&password=" + password;
改成
scr.src = "http://localhost:8075/WebReport/ReportServer?op=fs_load&cmd=sso&username="+ username + "&password=" + password;

点击项目里面的登录按钮,跳到后台进行项目里面的验证,此报表的验证方式需要在页面前台内调用javascript的方式触发,这边类似定义了两个onclick事件,而.net不能同时触发两个onclick事件,所以先要触发完一个onclick事件后再触发另一个,考虑报表没有验证完.net项目就跳转的话,导致报表没有验证成功,所以点击登录按钮首先触发报表验证方法,其次再到.net后台进行验证。

3. 触发.net前台

触发前台报表验证方法,新建一个登录按钮,设置按钮OnClientClick属性为:OnClientClick="doSubmit();return false;",即触发前台doSubmit()方法,doSubmit()方法,首先把获取的用户名和密码的值,发送到报表系统,报表服务将带着这两个参数访问认证地址进行认证。而项目本身有个登录按钮是触发的项目后台的方法,我们这边首先触发报表前台再通过js的方式触发后台的那个登录按钮,所以这边需要把之前的登录按钮设置隐藏,属性为Style="display: none;"。

4. 触发.net后台

报表验证完再触发.net项目后台登录验证的方法,通过登录按钮ID为Button1,使用document.getElementById("Button1").click();触发登录按钮,但是每个浏览器执行的方式不同,所以这边需要判断一下,代码如下:

  if(scr.attachEvent){       //判断是否为ie浏览器  
              scr.attachEvent("onload", function(){                    //如果为ie浏览器则页面加载完成后立即执行  
                  var f = document.getElementById("Button1");  
                  f.click();  
              });  
           } else {  
              scr.onload = function(){             //其他浏览器则重新加载onload事件  
                   var f = document.getElementById("Button1");  
                   f.click();  
              };  
         }

下面以简单的登录验证页面login.aspx为例head中调用javascript

示例

1、登录前台页面

以简单的登录验证页面login.aspx为例,head中调用javascript触发报表方法:

<%@ Page Language="C#"AutoEventWireup="true" CodeFile="login.aspx.cs"Inherits="login" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<htmlxmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
   <title>无标题页</title>
  <scripttype="text/javascript" language="javascript">  
      function doSubmit() {    
         varusername =document.getElementById("username").value;  //此处是用来提取用户名和密码
         varpassword =document.getElementById("userPwd").value;
        varscr = document.createElement("iframe");      //创建iframe  
         vardt=new Date();
        scr.src= "/WebReport/ReportServer?op=fs_load&cmd=sso&username=" +username + "&password=" +password+"&time="+dt.toString();  //将报表验证用户名密码的地址指向此iframe  
        if(scr.attachEvent){       //判断是否为ie浏览器  
              scr.attachEvent("onload", function(){                    //如果为ie浏览器则页面加载完成后立即执行  
                  var f = document.getElementById("Button1");  
                  f.click();  
              });  
           } else {  
              scr.onload = function(){             //其他浏览器则重新加载onload事件  
                   var f = document.getElementById("Button1");  
                   f.click();  
              };  
        }  
       document.getElementsByTagName("head")[0].appendChild(scr);   //将iframe标签嵌入到head中  
    } 
 </script>
</head>
<body>
    <formid="form1" runat="server">
   <div>
       <asp:TextBox ID="username" runat="server"Style="z-index: 100; left: 156px; position: absolute;
           top: 42px"></asp:TextBox>
       <asp:TextBox ID="userPwd" runat="server"Style="z-index: 101; left: 157px; position: absolute;
           top: 91px"></asp:TextBox>
       <asp:Label ID="Label1" runat="server"Height="22px" Style="z-index: 102; left: 76px;
           position: absolute; top: 46px" Text="用户名:" Width="77px"></asp:Label>
       <asp:Label ID="Label2" runat="server"Style="z-index: 103; left: 80px; position: absolute;
           top: 88px" Text="密码:"Width="64px"></asp:Label>
       <asp:Button ID="Button1" runat="server"  Style="z-index: 104; display:none;
           left: 84px; position: absolute; top: 132px" Text="登录" Width="66px" />
       <asp:Button ID="Button2" runat="server"OnClientClick="doSubmit();return false;"
           Style="z-index: 106; left: 178px; position: absolute; top:133px" Text="登录" Width="100px" />
    
   </div>
   </form>
</body>
</html>

前台和后台验证成功之后,单点登录页面就设计完成了。

报表工具是通过url传用户名和密码进行验证,传到报表服务器是以session的方式保存,防止被人中途拦截会导致系统泄密,可以对登录进来的密码进行加密,或者使用https证书,让请求在传输过程中加密,配置方法也很简单。这种方式还存在一个证书合法性问题,用自己生成的证书,客户端在访问报表中浏览器会显示证书非法警告,所以需要去购买合法证书。目前国内最便宜的证书一年是一千多元。

2、平台设置

一般情况下报表集成到.net系统,首先登录访问.net的项目,所以自定义登录页面访问地址可以不需要设置,如果没有登录到.ne项目,先访问我们的报表了,而这时访问报表的登录页面是报表内置的登录界面,需使用自动登录页面地址为您系统的登录地址,操作如下:

打开http://localhost/WebReport/ReportServer?op=fr_platform,FR管理平台,选择权限配置>登录设置,自定义登录页面访问地址上,输入自己的登录页面路径http://localhost/FRtest/login.aspx,如下图所示:

系统集成方案(一).NET集成方案


当前名称:系统集成方案(一).NET集成方案
标题网址:https://www.cdcxhl.com/article36/gihgsg.html

成都网站建设公司_创新互联,为您提供品牌网站建设全网营销推广用户体验网站策划微信公众号服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设