为了更好地让应用系统进行调用,有的时候需要对接口进行封装,把复杂的东西包起来,让应用系统接口开发者感觉越简单越好。这样你的系统才更容易被推广或应用。比如,现在的很多在线支付接口都提供了软件开发包。我们也可以通过封装来实现接口开发包,让开发人员简单开发,轻松调用。
1.接口封装
我们添加一个SSOLib类库项目,提供对应用系统接口代码的封装,从而使其他应用系统通过调用该类库,即可实现接入认证服务中心。SSOLib类库项目如图18-17所示,详细代码请参考本书配套光盘。
图18-17 SSOClass类库项目
l Assistant类:辅助工具类。
l
DESEncrypt类:加密/解密处理类。
l
SynPageBase类:(接收认证中心)状态同步页面的基类,在应用系统中创建一个空白页面继承该类,即可实现同步功能。
l
ValidatePageBase类:当前应用系统验证页面的基类。应用系统中的任一页面通过继承该类,都可实现对用户状态的验证功能。
2.应用系统调用接口开发步骤
下面看一下如何通过调用上面封装过的类库,来实现接入认证服务中心实现单点登录功能。
(1)在Web.config里设定环境参数:
<appSettings>
<!--认证服务器验证请求地址-->
<add key="ServiceValidate" value="http://localhost:2999/Validate.aspx"/>
<!--认证服务器域名地址-->
<add key="ServiceUrl" value="http://localhost:2999"/>
<!--分配给应用系统的API代码-->
<add key="apikey" value="642386db7bf249018117e643522d6a05"/>
<!--是否加密传递 -->
<add key="IsEncrypt" value="false"/>
<!--加密密钥-->
<add key="EncryptKey" value="litianping"/>
</appSettings>
(2)在Global.asax.cs中Session_Start添加:
protected void Session_Start(object sender, EventArgs e)
{
this.Session.Add("UserID", 0);
this.Session.Add("Pass", false);
this.Session.Add("Security", "");
this.Session.Add("Url", "");
}
(3)引用组件SSOLib.DLL,如图18-18所示。
图18-18 引用组件SSOLib.DLL
(4)用户身份认证,验证当前状态。
将要进行验证的页面(AnyPage)基类由System.Web.UI.Page改为 SSOLib.ValidatePage。
(5)接收认证服务器的返回信息进行状态同步。
在项目中增加一个空白页面Synchronous.aspx,将页面基类继承自SSOLib.SynPageBase。
(6)更新认证服务器,保持Service认证服务器Session状态。
添加一个用户控件SynServerIFrame.ascx实现如下代码,并拖到所有的页面上。
<iframe width=0 height=0 src='<%= ServiceUrl%>/SessionState.aspx'></iframe>
SynServerIFrame.ascx.cs代码如下:
public partial class SynServerIFrame : System.Web.UI.UserControl
{
public string ServiceUrl = ConfigurationSettings.AppSettings["ServiceUrl"];
}
(7)注销当前应用系统的登录。
Session.Clear();
Session.Abandon();
(8)注销所有应用系统的登录。
直接转向服务器注销页面即可:
Response.Redirect(ConfigurationSettings.AppSettings["ServiceUrl"] +
"/logout.aspx");
通过上面方式的调用,应用系统的开发工作量大大减少,几分钟就可以实现了。当然,这里不仅仅是教给大家几行代码,更重要的是一种思想,一种为客户着想的思想。
本文节选自《项目中的.NET》一书
李天平编著
电子工业出版社出版
分享到:
相关推荐
Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,Api接口调用封装,实现POSt,GET等数据请求,...
Android 调用Http接口的封装。由于Android要求Http调用必须在线程当中,所以本人就封装了一个工具类,该工具类即支持阻塞/同步调用,也支持异步调用,便于调用Http接口方便。
C#开发核心代码,用拼接XML方式,调用封装了实体类的SOAP接口
用ajax调用接口
jsp+jquery项目中正常使用vue组件并调用接口封装的request拦截器
c# http请求webapi接口封装类
万能的反射封装接口,值得下载参考,当成util
ftplib二次开发封装函数库,适用于linux c应用程序,实现与ftp服务器文件上传及下载功能,方便用户调用,解决开源库网络异常登录、上传、下载函数接口阻塞问题,实现超时监测机制,增加文件断点续传功能!
提供完整的html5页面开发流程和开发方式,包括html5页面开发代码,含ajax封装方法,以及调用的方式
C++库封装JNI接口-实现java调用c++
调用Lua的接口的时候需要执行进栈和出栈等重复性工作,这几个文件的目的是打造一个简单易用的接口,让C\C++更方便地使用Lua的函数
TAIP是调用腾讯AI接口封装的Java客户端,为调用腾讯AI功能的开发人员提供了一系列的交互方法。TAIP是调用腾讯AI接口封装的Java客户端,为调用腾讯AI功能的开发人员提供了一系列的交互方法。并非腾讯AI官方出品。接口...
C#动态载入DLL,DLL中类方法调用,及采用接口方式调用DLL的类方法和获取类成员属性。含示例代码及程序运行截图。
微信小程序api接口调用用封装 1. 在 02-项目 下新建request目录及index.js文件 1.1 02-项目\request\index.js 1.2.index.js // 同时发送异步代码的次数 let ajaxTimes=0; export const request=(params)=>{ //...
用友U9ERP 请购单 ISV 封装调用源代码 C#版本,请购单创建,提交,审核
用QT 封装的操作Sql server,MySql,SQLite,ODBC数据库的接口类,我在QT5.8下使用没问题,非常好用!
C#实现微信企业号API服务端调用封装全部源码 1、基础方法 1.1 在回调模式下验证服务器接口地址 1.2 服务器端解密方法 1.3 服务器端加密方法 1.4 获取AccessToken(企业号的全局唯一票据) 1.5 获取企业号应用的基本...
收录3个版本的CTP API接口封装 1.直接C++调用版2.Visual C++.net封装C#调用版3.海风C++封装公开dll接口C#调用版
使用python调用chatgpt的Assistant API,我对几种常用的接口进行了封装,只需传入key即可调用,包含创建助理(Assistant ,列出助理(Assistant ),#创建线程 ,#聊天,#查询消息