`

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

阅读更多

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

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

 

1.触发报表验证方法

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

function doSubmit() {    
         var username =document.getElementById("username").value;  //此处是用来提取用户名和密码
         var password =document.getElementById("userPwd").value;
        var scr = document.createElement("iframe");      //创建iframe  
         var dt=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 XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
  <script type="text/javascript" language="javascript">  
       function doSubmit() {    
         var username =document.getElementById("username").value;  //此处是用来提取用户名和密码
         var password =document.getElementById("userPwd").value;
        var scr = document.createElement("iframe");      //创建iframe  
         var dt=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>
    <form id="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,如下图所示:





0
0
分享到:
评论

相关推荐

    1000个RFID经典系统集成方案1-5

    RFID经典系统集成方案

    asp.net投票系统

    它基于.NET Framework,提供了一种高效、安全且易于维护的方式来构建 Web 解决方案。本篇文章将深入探讨如何利用 ASP.NET 开发一个在线投票系统,包括系统的架构、数据库设计以及使用说明。 ### 一、系统架构 1. *...

    大学专用智能评教系统源代码ASP.NET

    总的来说,"大学专用智能评教系统源代码ASP.NET"是一项结合了软件工程、数据库设计、Web开发和教育管理的复杂项目,其目标是为高校提供一个实用、高效且安全的在线评教解决方案。通过深入理解和运用这些知识点,...

    NET分布式应用程序 集成XML Web服务与.NET远程处理

    在阅读本书的过程中,你将学习到如何利用.NET Framework提供的工具和类库,如System.Web.Services和System.Runtime.Remoting,来构建高效、可靠的分布式解决方案。书中的实例和实战演练将帮助你更好地理解这些抽象...

    学生成绩管理系统C# asp asp.NET

    学生成绩管理系统是一款基于C#、ASP和ASP.NET技术构建的应用程序,主要用于教育机构管理和跟踪学生的学术成绩。这个系统能够帮助教务人员高效地记录、分析和报告学生的学业表现,从而提升教学管理效率。 首先,C#是...

    B2C商城综合系统源码(asp.net)

    【标题】:“B2C商城综合系统源码(asp.net)”是基于ASP.NET技术开发的一套电子商务解决方案,专为在线零售业务(Business-to-Consumer)设计。它涵盖了网上商城的基本功能,如商品展示、购物车、订单处理、支付集成...

    ASP.NET网上购物商城系统(ASP.NET源码)

    ASP.NET网上购物商城系统是一种基于ASP.NET技术构建的电子商务平台,它提供了全面的在线购物解决方案。这个源码项目是开发者们宝贵的参考资料,因为ASP.NET框架的源代码通常不易收集,尤其是完整实现购物功能的源码...

    ASP.NET物流管理系统源码

    这个系统基于ASP.NET技术构建,提供了全面的物流管理解决方案,旨在优化物流作业流程,提高效率,降低成本。以下是对这个系统的详细说明: 1. ASP.NET框架:ASP.NET是微软推出的一种Web应用程序开发框架,它基于...

    asp.net 餐饮管理系统

    总之,"ASP.NET餐饮管理系统"是一个集成了Web技术与数据库管理的实用工具,它简化了餐饮行业的日常运营流程,提高了工作效率。开发者通过合理的架构设计和功能实现,为餐饮企业带来了便捷的数字化管理手段。

    asp.net办公自动化系统

    总结来说,"asp.net办公自动化系统"利用了ASP.NET技术,结合VS.NET 2003开发环境,构建了一个成熟的办公管理解决方案。提供的文件涵盖了系统使用说明、Web控件、备份文件、音频教程以及系统源码等多个方面,全面支持...

    《网上商品展示系统系统》asp.net 源代码

    这个系统的核心是利用.NET框架的强大功能,结合Web开发的最佳实践,为在线销售提供了一个稳定、高效且易于维护的解决方案。 在ASP.NET框架下,该系统可能采用了C#或VB.NET作为后端编程语言,利用ASP.NET MVC(Model...

    asp.net考勤系统

    ASP.NET考勤系统是一款基于微软的.NET框架,利用ASP.NET技术构建的企业级考勤管理解决方案。这个系统设计目的是为了高效地记录和管理员工的出勤情况,为人事部门提供便捷的数据统计和分析功能。以下是对该系统的一些...

    Microsoft.NET Server企业解决方案

    微软的.NET Server是其在2000年代初期推出的一款服务器操作系统,主要面向企业级市场,旨在提供强大的网络服务、应用程序托管和管理功能。这一平台的构建基于.NET Framework,它是一个全面的开发和运行环境,支持...

    ASP.NET跨域SSO解决方案

    本文将详细介绍一种基于ASP.NET的跨域SSO解决方案,并探讨其实施细节与优势。 #### 二、跨域SSO概念解析 ##### 2.1 什么是SSO? 单点登录是一种身份验证机制,允许用户通过一次登录操作即可访问所有授权系统或...

    .net版本真正可用的商业his系统(经典源码)

    .NET HIS系统,全称为.NET Healthcare Information System,是基于微软的.NET框架开发的医疗信息系统。这个系统主要用于医疗机构管理和信息处理,涵盖了医院日常运营的多个关键领域,如患者管理、医生排班、药品库存...

    .net完整版本OA办公管理系统源码

    在这个特定的案例中,我们讨论的是一个基于.NET框架的OA(Office Automation)办公管理系统源码。OA系统是一种自动化管理工具,旨在提高组织的工作效率,通过电子化流程处理日常办公任务。 该源码是".net完整版本...

    asp.net 商城系统

    这个系统为开发者和商家提供了一个完整的解决方案,用于创建和管理在线商店。ASP.NET是一个强大的Web应用程序框架,由微软开发,它允许开发者使用C#或VB.NET等编程语言来构建动态、数据驱动的网站。 在"asp.net ...

    一个应用程序框架,您可以将它集成到任何 .NET/C# 应用程序中

    标题中的“一个应用程序框架,您可以将它集成到任何.NET/C#应用程序中”指的是Furion框架,这是一款专为.NET开发者设计的高级开发框架。Furion的目标是简化.NET/C#应用的开发流程,提高代码复用性,并促进开发效率。...

    C#商城系统 C#+ASP.NET开发

    这个系统是.NET框架下的一个典型应用,展示了C#编程语言与ASP.NET框架的高效结合,为电子商务平台提供了一种强大的解决方案。 首先,C#(读作"C Sharp")是一种面向对象的编程语言,由微软公司开发,主要应用于...

    医院管理系统(c#.net源码)

    5. `系统`:意味着这是一个完整的软件解决方案,集成了多个子系统,以协同工作来满足医院的管理需求。 【详细知识点】: 1. **C#基础**:理解C#的基本语法、类和对象、继承、多态、接口等面向对象特性,以及异常...

Global site tag (gtag.js) - Google Analytics