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;
2.实现过程

点击项目里面的登录按钮,跳到后台进行项目里面的验证,此报表的验证方式需要在页面前台内调用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,如下图所示:

系统集成方案(一).NET集成方案相关推荐

  1. 互联网单点登录集成方案

    为了迎合公司互联网化经营,业务部门均纷纷上马了互联网的项目,部门应用之间各自为政,无法形成公司整体品牌效应,以及影响用户体验,故,有了以下的单点登录集成方案. 概述 整合集成公司各个业务部门的应用,支 ...

  2. 金蝶K3-WISE与管易云的集成方案

    方案简介 对于曾从事传统线下业务的企业而言,在开展电子商务销售之前往往购置了ERP系统,并已经应用于线下销售业务.由于在线销售的形态和线下销售迥异,传统ERP往往无法适应在线销售.采用"轻易 ...

  3. TensorFlow神经网络集成方案

    TensorFlow神经网络集成方案 创造张力流create_tensorflow_neuropod 将TensorFlow模型打包为neuropod包. create_tensorflow_neur ...

  4. element vue 动态单选_软件更新丨vue-element-admin 4.0.0 beta 发布,后台集成方案

    vue-element-admin 4.0.0 beta 发布了. vue-element-admin 是一个后台集成解决方案,它基于 vue 和 element.它使用了最新的前端技术栈,内置了 i ...

  5. MiniDao普通项目集成方案

    2019独角兽企业重金招聘Python工程师标准>>> MiniDao普通项目集成方案 1.导入必要的jar包: 2.spring配置文件增加如下配置: <!-- Hibern ...

  6. 基于 EventBridge 构建 SaaS 应用集成方案

    引言 事件驱动架构(EDA)是一种以事件为纽带,将不同系统进行解耦的异步架构设计模型.在 EDA 中,事件驱动的运行流程天然地划分了各个系统的业务语义,用户可以根据需求对事件与针对此事件做出的响应灵活 ...

  7. (十七)java版spring cloud+spring boot 社交电子商务平台-spring+springmvc+kafka分布式消息中间件集成方案...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.kafka消息平台使用spring+kafka的集成方案,详情如下: 使用最高版本2.1.0.RELEASE集成jar包:spring-integr ...

  8. 基于PaaS平台的多应用自集成方案之公共数据集成

    源宝导读:在明源云"天际"PaaS平台之上,可以构建.部署和运行多个业务应用,并支持多应用分离部署,以提升系统整体的性能和稳定性.本文将介绍多应用自集成解决方案以及相关的实现细节. ...

  9. 日志服务与SIEM(如Splunk)集成方案实战

    背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规.审计.与其他相关日志能够导入到您的安全运维中心(SOC)中. 名词解释 LOG( ...

  10. 日志服务与SIEM(如Splunk)集成方案实战 1

    背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规.审计.与其他相关日志能够导入到您的安全运维中心(SOC)中. 名词解释 LOG( ...

最新文章

  1. TestNG方法測试及注意要点 代码及配置具体解释(解决testng方法不运行问题)
  2. Update item to this version和Revert to this version区别
  3. Dubbo接口测试方法及步骤
  4. 用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许
  5. 练习-前程无忧数据爬取
  6. 使用Jenkins在Azure Web App上进行ASP.NET Core应用程序的持续集成和部署(CI/CD)–第4天
  7. SQL Server跨server之间訪问
  8. 操作系统实验一:并发程序设计
  9. ROS机器人语音交互(一)
  10. python爬取谷歌学术_python爬取谷歌热度
  11. Graph_Master(连通分量_D_Trajan缩点+dfs)
  12. 相机意外断电导致视频保存成DAT文件,无法播放,如何修复视频文件?
  13. 视频网站盈利模式与营销策划
  14. 【Linux基础编程】help命令
  15. html做特效,html特效代码大全
  16. 前端导出word图片
  17. C/C++在线餐馆预订管理系统
  18. 百度图片时看到一张很眼熟,竟然是自己发的,这收录效率!
  19. 北京小客车摇号数据的一点质疑
  20. 032 参数方程确定的函数导数

热门文章

  1. 中国地区城市php,中国城市列表
  2. MATLAB Simmechanics/Simscape四旋翼无人机控制仿真(1) SolidWorks模型的导入
  3. CVX用户指南之求解器
  4. 2小时部署实时反欺诈深度学习模型 —— IBM主机机器学习平台社区版简介
  5. 计算机ps基础知识教案范文,ps基础教案
  6. 老男孩Python高级全栈开发工程师【高清全套完整】
  7. SSIM PSNR db
  8. Kali Linux 暴力破解wifi密码详细步骤
  9. 银行业保险业数字化转型指导意见下发,IT 基础架构团队如何应对挑战?
  10. VS2017社区版30天到期无法使用的激活方法——注册用户登录即可