ASP.NET中WebService的两种身份验证方法
一、通过SOAP Header身份验证
此方法是通过设置SOAP Header信息来验证身份,主要通过以下几步:
1、在服务端实现一个SOAP Header类
public class CredentialSoapHeader : System.Web.Services.Protocols.SoapHeader
{
//验证身份的用户名
public string UserId
{
get;
set;
}
//验证身份的密码
public string Password
{
get;
set;
}
}
2、创建WebService
[WebService(Namespace=http://tempuri.org/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
public WebService()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
//生成一个CredentialSoapHeader类的实例
public CredentialSoapHeader header;
[WebMethod(Description="用户验证测试")]
[System.Web.Services.Protocols.SoapHeader("header")] //用户身份验证的soap header
public string HelloWorld(string contents)
{
//验证是否有权访问(当然,也可以通过查询数据库实现,具体视项目要求)
if(header.UserId.equals("admin") && header.Password.equals("admin"))
{
return "Hello World " + contents;
}
else
{
return "无权使用此服务";
}
}
}
3、调用WebService
protected void Button1_Click(object sender, EventArgs e)
{
localhost.WebService service = new localhost.WebService();
localhost.CredentialSoapHeader header = new localhost.CredentialSoapHeader();
//设置SOAP Header
Header.UserId = "admin";
Header.Password = "admin";
service.CredentialSoapHeader = header;
//调用Web方法
Response.Write(service.HelloWorld("测试"));
}
二、通过集成windows身份验证
1、将WebService设为集成Windows身份验证
2、客户端引用代码
localhost.WebService service = new localhost.WebService();
service.Credentials = new NetworkCredential("guest","123"); //guest是用户名,123是密码
string result = service.HelloWorld("测试");
ASP.NET中WebService的两种身份验证方法的更多相关文章
- asp.net中常用的几种身份验证方式
转载:http://www.cnblogs.com/dinglang/archive/2012/06/03/2532664.html 前言 在B/S系统开发中,经常需要使用"身份验证&q ...
- webservice常用两种身份验证方式
在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题:怎么防止别人访问我的WebService?从哪里引用我的WebService?对于第一个问题,就涉 ...
- asp.net中过滤器的两种写法
1.写在一个单独的类库中在web.config中进行配置 <httpModules> <add name="" type="类的全名称,程序集的名称&q ...
- ASP.Net中无刷新执行Session身份验证
在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的 ...
- [ASP.NET]SQL Server 连接字符串和身份验证
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1; Property ...
- cxf构建webservice的两种方式
一.简介 对于基于soap传输协议的webservice有两种开发模式,代码优先和契约优先的模式.代码优先的模式是通过编写服务器端的代码,使用代码生成wsdl:契约优先模式首先编写wsdl,再通过ws ...
- java中super的两种用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
- java中线程分两种,守护线程和用户线程。
java中线程分为两种类型:用户线程和守护线程. 通过Thread.setDaemon(false)设置为用户线程: 通过Thread.setDaemon(true)设置为守护线程. 如果不设置次属性 ...
- AspNetWebApi管线中如果定义两种类型的消息处理程序(全局/路由)
AspNetWebApi管线中如果定义两种类型的消息处理程序(全局/路由) 在AspNetWebApi管线中存在两种类型的消息处理程序(Message Handler) 1.全局消息处理程序,所有的请 ...
随机推荐
- OpenCV相机标定和姿态更新
原帖地址: http://blog.csdn.net/aptx704610875/article/details/48914043 http://blog.csdn.net/aptx704610875 ...
- 关于Domino数据库的软删除
在Domino的数据库属性的 “高级” 附签(选择文件->数据库->属性),选中“允许软删除”,这样我们就启用了软删除功能,当一个文档没有删除的时候我们可以使用NotesDatabase的 ...
- Linux所有者和组
组 添加组 groupadd 组名 查看所有组 cat /etc/group 添加成员useradd -g 组名 用户名 查看成员 cat /etc/passwd 查看用户权限 ls -l d rw ...
- Rxlifecycle(一):使用
Rxlifecycle使用非常方便简单,如下: 1.集成 build.gradle添加 //Rxlifecycle compile 'com.trello:rxlifecycle:0.3.1' com ...
- JavaScript 事件——“事件类型”中“复合事件”和“变动事件”的注意要点(转)
复合事件 复合事件是DOM3级事件中心添加的一类事件,用于处理IME的输入序列. compositionstart.compositionupdate.compositionend 复合事件有以下三中 ...
- Linux 导入epel源
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh http:// ...
- Xcode报错:“Your build settings specify a provisioning profile with the UUID..... however, no such provisioning profile was found”
运行环境: Xcode5 & 5.0及以上版本 对工程进行Archive打包的时候出现如下错误 问题描述: Code Sign error: No matching provisionin ...
- CSS-JQUERY笔记
Ready $(document).ready(function(){ }) Input_div_span Input-长度限制 <input maxLength="2"&g ...
- c# 垮线程调用控件
http://www.cnblogs.com/TankXiao/p/3348292.html
- Text3d
有小bug,先弄这么多吧,晚了,碎觉了 ---------------------------------