zoukankan
html css js c++ java
添加Soap头来增加Web Service的安全性
myService.asmx.cs
添加类:
MyHeader
从 System.Web.Services.Protocols.SoapHeader继承
完整的代码如下
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Diagnostics;
using
System.Web;
using
System.Web.Services;
//
对soap Head引用添加的命名空间
using
System.Web.Services.Protocols;
namespace
study
{
/**/
///
<summary>
///
myService 的摘要说明。
///
</summary>
//
[WebService(Namespace="
http://MyServer/MyWebServices/
")]
public
class
myService : System.Web.Services.WebService
{
/**/
///
<summary>
///
Soap头实例
///
</summary>
public
MyHeader myHeader
=
new
MyHeader();
public
myService()
{
//
CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
组件设计器生成的代码
#region
组件设计器生成的代码
//
Web 服务设计器所必需的
private
IContainer components
=
null
;
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
}
/**/
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing )
{
if
(disposing
&&
components
!=
null
)
{
components.Dispose();
}
base
.Dispose(disposing);
}
#endregion
//
WEB 服务示例
//
HelloWorld() 示例服务返回字符串 Hello World
//
若要生成,请取消注释下列行,然后保存并生成项目
//
若要测试此 Web 服务,请按 F5 键
[WebMethod]
public
string
HelloWorld()
{
return
"
Hello World
"
;
}
[SoapHeader(
"
myHeader
"
)]
[WebMethod(Description
=
"
ddddddd
"
,EnableSession
=
true
)]
public
string
HelloWorld2(
string
contents)
{
string
msg
=
""
;
//
验证是否有权访问
if
(
!
myHeader.IsValid(
out
msg))
return
msg;
return
"
Hello World:
"
+
contents;
}
}
public
class
MyHeader : System.Web.Services.Protocols.SoapHeader
{
private
string
_UserID
=
string
.Empty;
private
string
_PassWord
=
string
.Empty;
/**/
///
<summary>
///
构造函数
///
</summary>
public
MyHeader()
{
}
/**/
///
<summary>
///
构造函数
///
</summary>
///
<param name="nUserID">
用户ID
</param>
///
<param name="nPassWord">
加密后的密码
</param>
public
MyHeader(
string
nUserID,
string
nPassWord)
{
Initial(nUserID,nPassWord);
}
属性
#region
属性
/**/
///
<summary>
///
用户名
///
</summary>
public
string
UserID
{
get
{
return
_UserID;}
set
{_UserID
=
value;}
}
/**/
///
<summary>
///
加密后的密码
///
</summary>
public
string
PassWord
{
get
{
return
_PassWord;}
set
{_PassWord
=
value;}
}
#endregion
方法
#region
方法
/**/
///
<summary>
///
初始化
///
</summary>
///
<param name="nUserID">
用户ID
</param>
///
<param name="nPassWord">
加密后的密码
</param>
public
void
Initial(
string
nUserID,
string
nPassWord)
{
UserID
=
nUserID;
PassWord
=
nPassWord;
}
/**/
///
<summary>
///
用户名密码是否正确
///
</summary>
///
<param name="nUserID">
用户ID
</param>
///
<param name="nPassWord">
加密后的密码
</param>
///
<param name="nMsg">
返回的错误信息
</param>
///
<returns>
用户名密码是否正确
</returns>
public
bool
IsValid(
string
nUserID,
string
nPassWord,
out
string
nMsg)
{
nMsg
=
""
;
try
{
//
判断用户名密码是否正确
if
(nUserID
==
"
admin
"
&&
nPassWord
==
"
admin
"
)
{
return
true
;
}
else
{
nMsg
=
"
对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确
"
;
return
false
;
}
}
catch
{
nMsg
=
"
对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确
"
;
return
false
;
}
}
/**/
///
<summary>
///
用户名密码是否正确
///
</summary>
///
<returns>
用户名密码是否正确
</returns>
public
bool
IsValid(
out
string
nMsg)
{
return
IsValid(_UserID,_PassWord,
out
nMsg);
}
#endregion
}
}
通过
soap
调用的代码如下:
//
在此处放置用户代码以初始化页面
//
创建myService对象
MyWebServer.myService service
=
new
study.MyWebServer.myService();
//
创建soap头对象
MyWebServer.MyHeader header
=
new
study.MyWebServer.MyHeader();
//
设置soap头变量
header.PassWord
=
"
admin
"
;
header.UserID
=
"
admin
"
;
service.MyHeaderValue
=
header;
//
调用web 方法
this
.Label1.Text
=
service.HelloWorld2(
"
dob
"
);
查看全文
相关阅读:
Java 重写(Override)与重载(Overload)
Java 继承
Java 异常处理
Java Scanner 类
Java 流(Stream)、文件(File)和IO
Java 方法
Java 正则表达式
Beta冲刺——代码规范、冲刺任务与计划
Beta冲刺——凡事预则立
Beta冲刺——问题总结博客(事后诸葛亮和组员交换事宜)
原文地址:https://www.cnblogs.com/engine1984/p/1038412.html
最新文章
快速查看linux 系统信息查看小命令
2020-1-5:vulnhub靶场,6Days_Lab-v1.0.1
2020-1-4:安装Python,运行PIP出现LookupError: unknown encoding: cp65001
2019-12-27:linux关闭蜂鸣器
2019-12-23:域渗透,笔记
2019-12-20:密码获取,笔记
2019-12-20:端口转发和代理,笔记
Navicat Premium 连接Oracle 数据库
Windows服务器安全配置指南
java对文件的操作
热门文章
关于javascript异步编程的理解
从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs
Mysql中``和‘’的区别
JAVA里面json和java对象之间的相互转换
关于String和StringBuffer的原理
Eclipse添加Jquery和javascript的智能提示
关于mysql无法添加中文数据的问题以及解决方案
Java 封装
Java 抽象类
Java 多态
Copyright © 2011-2022 走看看