webservice权限控制(A系统通过tomcat的j_security_check实现安全登录,现在能获取登录B系统的用户名和密码)

本文目录
- A系统通过tomcat的j_security_check实现安全登录,现在能获取登录B系统的用户名和密码
- 什么是DBF框架
- 如何通过Web Services上传和下载文件
- 6、CXF与spring的整合(WebService的整合)
- 如何设置windows服务以及web Service服务的访问权限
- 调用的webservice网址是:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
A系统通过tomcat的j_security_check实现安全登录,现在能获取登录B系统的用户名和密码
建议你学习一下 webservice,做一个 登录的webservice,所有网站就都能用一个登录进行权限控制了
什么是DBF框架
BDF即BstekDevelopment Framework ,是一套以Spring3为基础以 Dorado7 为表现层的轻量级企业应用开发框架,提供诸如权限控制、流程引擎、WebService发布与调用、任务调度、多数据源切换等企业应用常见的功能。
如何通过Web Services上传和下载文件
随着Internet技术的发展和跨平台需求的日益增加 Web Services的应用越来越广 我们不但需要通过Web Services传递字符串信息 而且需要传递二进制文件信息 下面 我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器
一 通过Web Services显示和下载文件
我们这里建立的Web Services的名称为GetBinaryFile 提供两个公共方法 分别是GetImage()和GetImageType() 前者返回二进制文件字节数组 后者返回文件类型 其中 GetImage()方法有一个参数 用来在客户端选择要显示或下载的文件名字 这里我们所显示和下载的文件可以不在虚拟目录下 采用这个方法的好处是 可以根据权限对文件进行显示和下载控制 从下面的方法我们可以看出 实际的文件位置并没有在虚拟目录下 因此可以更好地对文件进行权限控制 这在对安全性有比较高的情况下特别有用 这个功能在以前的ASP程序中可以用Stream对象实现 为了方便读者进行测试 这里列出了全部的源代码 并在源代码里进行介绍和注释
首先 建立GetBinaryFile a *** x文件
我们可以在VS NET里新建一个C#的aspxWebCS工程 然后 添加新项 选择 Web服务 并设定文件名为 GetBinaryFile a *** x 在 查看代码 中输入以下代码 即 GetBinaryFile a *** x cs
using System;
using System Collections;
using System ComponentModel;
using System Data;
using System Diagnostics;
using System Web;
using System Web UI;
using System Web Services;
using System IO;
namespace aspxWebCS
{
///
/// GetBinaryFile 的摘要说明
/// Web Services名称 GetBinaryFile
/// 功能 返回服务器上的一个文件对象的二进制字节数组
///
[WebService(Namespace=
Description= 在Web Services里利用 NET框架进行传递二进制文件 )]
public class GetBinaryFile : System Web Services WebService
{
#region Component Designer generated code
//Web 服务设计器所必需的
private IContainer ponents = null;
///
/// 清理所有正在使用的资源
///
protected override void Dispose( bool disposing )
{
if(disposing &&ponents != null)
{
ponents Dispose();
}
base Dispose(disposing);
}
#endregion
public class Images: System Web Services WebService
{
///
/// Web 服务提供的方法 返回给定文件的字节数组
///
public byte GetImage(string requestFileName)
{
///得到服务器端的一个图片
///如果你自己测试 注意修改下面的实际物理路径
if(requestFileName == null || requestFileName == )
return getBinaryFile( D:\Picture JPG );
else
return getBinaryFile( D:\ + requestFileName);
}
///
/// getBinaryFile 返回所给文件路径的字节数组
///
///
public byte getBinaryFile(string filename)
{
if(File Exists(filename))
{
try
{
///打开现有文件以进行读取
FileStream s = File OpenRead(filename);
return ConvertStreamToByteBuffer(s);
}
catch(Exception e)
{
return new byte;
}
}
else
{
return new byte;
}
}
///
/// ConvertStreamToByteBuffer 把给定的文件流转换为二进制字节数组
///
///
public byte ConvertStreamToByteBuffer(System IO Stream theStream)
{
int b ;
System IO MemoryStream tempStream = new System IO MemoryStream();
while((b =theStream ReadByte())!= )
{
tempStream WriteByte(((byte)b ));
}
return tempStream ToArray();
}
public string GetImageType()
{
///这里只是测试 您可以根据实际的文件类型进行动态输出
return image/jpg ;
}
}
}
}
观看地址 进入讨论组讨论
一旦我们创建了上面的a *** x文件 进行编译后 我们就可以编写客户端的代码来进行调用这个Web Services了
我们先 添加Web引用 输入 下面 我们编写显示文件的中间文件 GetBinaryFileShow aspx 这里 我们只需要在后代码里编写代码即可 GetBinaryFileShow aspx cs文件内容如下
using System;
using System Collections;
using System ComponentModel;
using System Data;
using System Drawing;
using System Web;
using System Web SessionState;
using System Web UI;
using System Web UI WebControls;
using System Web UI HtmlControls;
using System Web Services;
namespace aspxWebCS
{
///
/// GetBinaryFileShow 的摘要说明
///
public class GetBinaryFileShow : System Web UI Page
{
private void Page_Load(object sender System EventArgs e)
{
// 在此处放置用户代码以初始化页面
///定义并初始化文件对象
aspxWebCS GetBinaryFile Images oImage;
oImage = new aspxWebCS GetBinaryFile Images();
///得到二进制文件字节数组
byte image = oImage GetImage( );
///转换为支持存储区为内存的流
System IO MemoryStream memStream = new System IO MemoryStream(image);
///定义并实例化Bitmap对象
Bitmap bm = new Bitmap(memStream);
///根据不同的条件进行输出或者下载
Response Clear();
///如果请求字符串指定下载 就下载该文件
///否则 就显示在浏览器中
if(Request QueryString== )
{
Response Buffer = true;
Response ContentType = application/octet stream ;
///这里下载输出的文件名字 ok jpg 为例子 你实际中可以根据情况动态决定
Response AddHeader( Content Disposition attachment;filename=ok jpg );
}
else
Response ContentType = oImage GetImageType();
Response BinaryWrite(image);
Response End();
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN 该调用是 ASP NEeb 窗体设计器所必需的
//
InitializeComponent();
base OnInit(e);
}
///
/// 设计器支持所需的方法 不要使用代码器修改
/// 此方法的内容
///
private void InitializeComponent()
{
this Load += new System EventHandler(this Page_Load);
}
#endregion
}
}
最后 我们就编写最终的浏览页面 GetBinaryFile aspx 这个文件很简单 只需要aspx文件即可 内容如下
《%@ Page language="c#" Codebehind="GetBinaryFile.aspx.cs" AutoEventWireup="false"
Inherits="aspxWebCS.GetBinaryFile" %》 Inherits= aspxWebCS GetBinaryFile %》
runat= server 》 runat= server 》下载文件
收藏地址:进入讨论组讨论
using System;
using System Collections;
using System ComponentModel;
using System Data;
using System Diagnostics;
using System Web;
using System Web Services;
using System IO;
namespace aspxWebCS
{
///
/// Upload 的摘要说明
///
[WebService(Namespace=
Description= 在Web Services里利用 NET框架进上载文件 )]
public class Upload : System Web Services WebService
{
public Upload()
{
//CODEGEN 该调用是 ASP NEeb 服务设计器所必需的
InitializeComponent();
}
#region Component Designer generated code
//Web 服务设计器所必需的
private IContainer ponents = null;
///
/// 设计器支持所需的方法 不要使用代码器修改
/// 此方法的内容
///
private void InitializeComponent()
{
}
///
/// 清理所有正在使用的资源
///
protected override void Dispose( bool disposing )
{
if(disposing &&ponents != null)
{
ponents Dispose();
}
base Dispose(disposing);
}
#endregion
public string UploadFile(byte fs string FileName)
{
try
{
///定义并实例化一个内存流 以存放提交上来的字节数组
MemoryStream m = new MemoryStream(fs);
///定义实际文件对象 保存上载的文件
FileStream f = new FileStream(Server MapPath( ) + \
+ FileName FileMode Create);
///把内内存里的数据写入物理文件
m WriteTo(f);
m Close();
f Close();
f = null;
m = null;
return 文件已经上传成功 ;
}
catch(Exception ex)
{
return ex Message;
}
}
}
}
using System;
using System Collections;
using System ComponentModel;
using System Data;
using System Drawing;
using System Web;
using System Web SessionState;
using System Web UI;
using System Web UI WebControls;
using System Web UI HtmlControls;
using System Web Services;
using System IO;
namespace aspxWebCS
{
///
/// Upload 的摘要说明
/// 利用该方法通过Web Services上载文件
///
public class Upload : System Web UI Page
{
protected System Web UI HtmlControls HtmlInputFile MyFile;
protected System Web UI WebControls Button Button ;
private void Page_Load(object sender System EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN 该调用是 ASP NEeb 窗体设计器所必需的
//
InitializeComponent();
base OnInit(e);
}
///
/// 设计器支持所需的方法 不要使用代码器修改
/// 此方法的内容
///
private void InitializeComponent()
{
this Button Click += new System EventHandler(this Button _Click);
this Load += new System EventHandler(this Page_Load);
}
#endregion
private void Button _Click(object sender System EventArgs e)
{
///首先得到上载文件信息和文件流
if(MyFile PostedFile != null)
{
System Web HttpFileCollection oFiles;
oFiles = System Web HttpContext Current Request Files;
if(oFiles Count 《 )
{
Response Write ( 请选择文件 );
Response End();
}
string FilePath = oFiles FileName;
if(FilePath == || FilePath == null)
{
Response Write ( 请选择一个文件 );
Response End();
}
string FileName = FilePath Substring(FilePath LastIndexOf( \ )+ );
try
{
///处理上载的文件流信息
byte;
System IO Stream fs;
aspxWebCS Upload o;
o = new aspxWebCS Upload();
fs = (System IO Stream)oFiles InputStream;
fs Read(b oFiles ContentLength);
///调用Web Services的UploadFile方法进行上载文件
Response Write(o UploadFile(b FileName));
fs Close();
}
catch(Exception ex)
{
Response Write(ex Message);
}
}
else
{
Response Write( 请选择文件 );
}
}
}
}
最后 需要注意的是 在保存文件时 您应该确保指定文件的完整路径(例如 C:MyFilesPicture jpg ) 并确保为 ASP NET使用的帐户提供要存储文件的目录的写权限 上载大文件时 可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值 其中 maxRequestLength 指示 ASP NET 支持的HTTP方式上载的最大字节数 该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击 指定的大小以 KB 为单位 默认值为 KB ( MB) executionTimeout 指示在被 ASP NET 自动关闭前 允许执行请求的最大秒数 在当文件超出指定的大小时 如果浏览器中会产生 DNS错误或者出现服务不可得到的情况 也请修改以上的配置 把配置数加大
另外 上载大文件时 还可能会收到以下错误信息
aspnet_wp exe (PID: ) 被回收 因为内存消耗超过了 MB(可用 RAM 的百分之 )
如果遇到此错误信息 请增加应用程序的 nfig 文件的 元素中 memoryLimit 属性的值
lishixinzhi/Article/program/net/201311/124106、CXF与spring的整合(WebService的整合)
web.xml
说明: 这里主要配置了 spring 的配置文件地址, spring 监听器、 CXF 核心控制器。
applicationContext.xml
说明:
在 spring 的配置文件中使用 jaxws:endpoint 元素来暴露 WebService ,这里有两种方式:
然后我们就可以将工程部署到 tomcat 中,在浏览器中使用
***隐藏网址***
MyClient.java
注意: myService 指定我们的服务名字(在 web.xml 中配置),而 fkjava 指定服务提供者的地址(在 applicationContext.xml 中配置)。同时这种集成不好,因为将地址写死了,没有使用 spring 的注入方式。
我们看 HelloWorldWs.java 这个服务类:
可以看到其中的实际业务处理类还是使用的手工方法进行实例化,没有使用 spring 的注入方式。
在 spring 的配置文件中改变暴露 WebService 的方式:
说明: 加 # 号是为了让服务器知道这个名字不是一个类 ,而只是一个 id 。
然后改造 HelloWorldWs.java 服务类:
然后我们再次使用之前的地址进行访问,发现效果还是一样的。
在上面配置的基础上进行添加,在 applicationContext.xml 中:
此时,和以前一样我们需要在客户端(工程 Call_CXFSpring )那边加上拦截器,添加上用户名和密码的头,然后对服务器进行访问。以此来进行验证。客户端中我们运行类:
MyClient.java
访问服务端。
传统的 SSH 项目中,一般在本地是有相关的数据的,但是有一种场景是我们需要调用别人的数据,但是别人的数据不可能让我们进行修改等操作,那么别人只会暴露一个 WebService ,而我们就需要去调用别人的 WebService 服务器。我们在访问别人时,只能得到 WSDL 文档。此时我们的项目中就不需要业务逻辑组件了,直接去调用别人的 WebService 的一个代理即可。
首先我们拷贝上面的工程,改名为 cxf_springClient ,然后需要增加 struts2 的相关 jar 包:
将原有的一些包删掉,留下权限包 org.fkjava.cxf.ws.auth 。然后我们启动工程 Auth_Server 提供远程服务。在 web 工程中生成相应的包及程序。
web.xml
说明: 这里我们不再需要 CXF 的 servlet 了,因为不需要业务类了,我们直接调用远程业务即可。同时配置 struts2 的核心控制器。
applicationContext.xml
说明: 这里我们同样不需要业务类了,但是需要配置远程业务代理类( serviceClass )。同时注意:不要将端口设置为8080,会冲突。可以看到我们使用 serviceClass 将接口配置进去,而这里的 id 不能随便写,要和 action 中定义的接口名一致。由于远程服务器设置了权限拦截,所以这里使用过滤器将用户名和密码设置到 wsdl 文档的头中。然后在这个类中我们需要使用 execute 方法去获取相应的数据。
struts.xml
ListCatsAction .java
说明:***隐藏网址***
content/listCats.jsp
说明: 此时访问就可以看到
如何设置windows服务以及web Service服务的访问权限
Windows 7 的 IIS 上发布 webservice操作如下: 1、在控制面板-》程序和功能-》打开或关闭Windows功能.找到 "Internet 信息服务",并将其子集全部打上勾,开启了 IIS 功能。
2、在开启 IIS 后,到 控制面板-》管理工具-》Internet信息服务(IIS)管理器,双击打开一个新的控制面板。
3、找到网站-》Default Web Site-》添加应用程序;
4、填写应用程序的别名,应用程序池默认就可以,物理路径选择上篇文章中建立Webservice时所保存的路径,然后点击 "连接为" 按钮:
5、选择特定用户, 点击右边的 "设置" 按钮 , 填写电脑的用户名跟密码,用户名一般默认都是 administrator:
6、填写好证据后,点击 "测试设置" 按钮. 在测试连接里面,如果 "身份验证"跟"授权"前面都打了绿色的勾,那么说明配置成功,这一步是对于 IIS 访问权限的配置。也就是获得系统管理员权限。
7、找到 IIS 选项里面的 "目录浏览" , 双击打开新面板。
8、点击选择最右边侧面的 "启用" 按钮。
9、这里的启用可以让我们有浏览应用程序内部文件目录的权限;
10、点击右侧的浏览应用程序,在后面加上我们上一篇文章里新添加的 "一般处理程序" Handler1.ashx就可以访问到刚发布到 IIS 的网站。
调用的webservice网址是:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
在你的工程中,导入服务引用,填写这个网址,你所需要的代码就会自动生成,其他引用也会自动添加

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30





