WebService 用户名密码验证
在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是证书.下面程序使用的是用户名/密码的方式,很简单的一个程序.
项目截图:
![]()
先看服务端的代码(ws_Service)
MySoapHeader.cs 这里通过继承SoapHeader实现对用户名/密码的验证
public class MySoapHeader:System.Web.Services.Protocols.SoapHeader
{
private string userID = string.Empty;
private string userPW = string.Empty; public string UserId
{
get { return userID; }
set { userID = value; }
}
public string UserPW
{
get { return userPW; }
set { userPW = value; }
}
public MySoapHeader()
{ }
public MySoapHeader(string name, string password)
{
userID = name;
userPW = password;
} private bool IsValid(string nUserId, string nPassWord, out string nMsg)
{
nMsg = "";
try
{
if (nUserId == "admin" && nPassWord == "admin")
{
return true;
}
else
{
nMsg = "对不起,你无权调用Web服务";
return false;
}
}
catch
{
nMsg = "对不起,你无权调用Web服务";
return false;
}
}
public bool IsValid(out string nMsg)
{
return IsValid(userID,userPW,out nMsg);
}
}
Service1.asmx文件代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)] public class Service1 : System.Web.Services.WebService
{
public MySoapHeader myHeader = new MySoapHeader();
[WebMethod]
public string GetMsg()
{
Thread.Sleep(5000);
return "Hello World";
} [SoapHeader("myHeader")]
[WebMethod(Description="获取用户列表")]
public string GetMain()
{
string msg = "";
if (!myHeader.IsValid(out msg))
{
return msg;
}
return "Main";
}
}
这里面有两个方法,其中GetMsg方法是不需要验证的,而GetMain方法需要进行用户名/密码的验证,这个可以在客户端调用时进行验证.
客户端添加对服务端的引用…
Program.cs文件
class Program
{
static void Main(string[] args)
{
localhost.Service1SoapClient proxy = new ws_Client.localhost.Service1SoapClient();
MySoapHeader header = new MySoapHeader(); header.UserId = "admin";
header.UserPW = "admin";
string result = proxy.GetMain(header); //string result = proxy.GetMsg(); Console.WriteLine(result);
Console.ReadKey();
} }
WebService 用户名密码验证的更多相关文章
- 【WCF】使用“用户名/密码”验证的合理方法
我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...
- WCF 安全性之 自定义用户名密码验证
案例下载 http://download.csdn.net/detail/woxpp/4113172 客户端调用代码 通过代理类 代理生成 参见 http://www.cnblogs.com/woxp ...
- OpenVPN使用用户名/密码验证方式
OpenVPN推荐使用证书进行认证,安全性很高,但是配置起来很麻烦.还好它也能像pptp等vpn一样使用用户名/密码进行认证. 不管何种认证方式,服务端的ca.crt, server.crt, ser ...
- 【WCF】Silverlight+wcf+自定义用户名密码验证
本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...
- WCF服务安全控制之netTcpBinding的用户名密码验证【转】
选择netTcpBinding WCF的绑定方式比较多,常用的大体有四种: wsHttpBinding basicHttpBinding netTcpBinding wsDualHttpBinding ...
- WCF用户名密码验证方式
WCF使用用户名密码验证 服务契约 namespace WCFUserNameConstract { [ServiceContract] public interface IWcfContract { ...
- 自定义实现wcf的用户名密码验证
目前wcf分为[传输层安全][消息层安全]两种,本身也自带的用户名密码验证的功能,但是ms为了防止用户名密码明文在网络上传输,所以,强制要求一旦使用[用户名密码]校验功能,则必须使用证书,按照常理讲, ...
- c#调用带用户名密码验证的wsdl
之前记录过一篇添加带验证的webservice,但是公司的另一个项目是.net framework2.0的项目,没有服务引用,只能添加web引用. 现在记录和分享一下方法: 先添加web引用,选择ws ...
- Python实现LDAP用户名密码验证
网上借鉴了不少东西,下面是python代码,备份后用. 思路,因为每个用户的组都不一样,这样就导致了dn不一致的情况, 据需要先根据用户名获取该用户的dn,然后再bind用户名和密码进行验证. 反正是 ...
随机推荐
- linux根据部署jenkins
1. Jenkins 下载 Jenkins 下载网址:http://jenkins-ci.org/ 2. Jenkins 安装 (1) 安装JDK JDK下载:http://www.oracle.co ...
- 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网
[新提醒]随身wifi无法使用FAQ(不断更新中~~~~~~) - 使用问题 - 360官方论坛 undefined 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网 ...
- Android OpenGL ES 应用(二) 纹理
上一篇讲了基础入门 OpenGL (一) ,这一次主要学习OpenGL 纹理基本学习总结 要是做复杂的OpenGL应用程序,一定会用到纹理技术.纹理说白了就是把图片或者视频图像绘制到OpenGL空间中 ...
- MD5 概念与用途
MD5概念: MD5这是message-digest algorithm 5(信息-摘要算法)缩写.用于加密和解密技术上,它能够说是文件的"数字指纹".不论什么一个文件,不管是可运 ...
- Cygwin下vim按方向键出现ABCD;
1:乱码解决Option->Text设置编码 2:vim按方向键出现A.B.C.D 解决:--$ cd /usr/share/vim/vim73 (ps:看你的版本号.假设没有这个文件可能是/u ...
- phantomjs,selenium,pyv8,pythonwebkit,,,,,,,,,,,,,
Pyv8,PythonWebKit,Selenium,PhantomJS,Ghost.py 等等.... 快速构建实时抓取集群[searchtb] 定义:http://i.cnblogs.com/Ed ...
- 谈Web应用系统的可维护性
每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢? 一. 整体组织 ...
- kubuntu14.04以下vpn(vpnc)连接配置
前几天在公司内部一直配置不了kubuntu14.04以下的vpn,从而无法实如今外网訪问公司内网的一些功能:是不方便在回家后继续coding(当然还有其他的事情.如邮件收发等.能够不用在linux以下 ...
- VC6.0入门使用
软件下载地址 http://pan.baidu.com/s/1qWuqFAO 新建win console 32 project,然后新建header文件.最后新建source cpp文件.如图所看到的
- 重写ResultSet实现分页功能(最好的分页技术)(转)
1.首先定义一个接口Pageable 继承ResultSet这个类 并在接口中定义一些自己的方法,具体方法如下: package com.page; import java.sql.ResultSet ...