调用WebService时加入身份验证,以拒绝未授权的访问
众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种方法来实现身份验证。
方法一:在WebService中引入SoapHeader
- #region 配置登录标头
- /// <summary>
- /// Code CreateBy BanLao
- /// </summary>
- public class MySoapHeader : SoapHeader
- {
- private string strUserName = string.Empty;
- private string strPassWord = string.Empty;
- public MySoapHeader() { }
- public MySoapHeader(string username, string password)
- {
- this.strUserName = username;
- this.strPassWord = password;
- }
- #region 构造 用户名|密码
- /// <summary>
- /// 用户名
- /// </summary>
- public string UserName
- {
- get { return strUserName; }
- set { strUserName = value; }
- }
- /// <summary>
- /// 密码
- /// </summary>
- public string PassWord
- {
- get { return strPassWord; }
- set { strPassWord = value; }
- }
- #endregion
- #region 检测是否正确登录
- /// <summary>
- /// 检测是否正确登录
- /// </summary>
- /// <returns></returns>
- public bool CheckLogin()
- {
- if (strUserName == "合法登录名" && strPassWord == "合法登录密码")
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- #endregion
- }
- #endregion
加入一个服务用于测试:
- #region 测试连接
- [System.Web.Services.Protocols.SoapHeader("myHeader")]
- [WebMethod(Description = "判断用户是否开通", EnableSession = true)]
- public string _GetValue(string strInputValue)
- {
- if (myHeader.CheckLogin())
- {
- string strReturnValue = strInputValue + "@CopyRight By BanLao 2010";
- return strReturnValue;
- }
- else
- {
- return "无效的身份验证,请重试!";
- }
- }
- #endregion
至此我们想要的需要通过身份验证的服务配置好了,下面让我们进行一些测试,新建一个webForm在Page_Load中:
- WebLogon.MySoapHeader myHeader = new WebLogon.MySoapHeader();
- myHeader.UserName = "约定的合法用户";
- myHeader.PassWord = "约定的合法密码";
- WebLogon.Service This_Service = new WebLogon.Service();
- This_Service.MySoapHeaderValue = myHeader;
- Response.Write(This_Service._GetValue("This is BanLao's Test Application For SoapHeader. "));
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For SoapHeader. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
方法二:Web Service以Session方式验证
- [WebMethod(Description = "检测是否正确登录", EnableSession = true)]
- public bool CheckLogin(string strUserName, string strPassword)
- {
- if (strUserName.Equals("admin") && strPassword.Equals("123456"))
- {
- Session["LoginState"] = true;
- }
- else
- {
- Session["LoginState"] = false;
- }
- return (bool)Session["LoginState"];
- }
- #region 测试连接
- [WebMethod(Description = "测试连接", EnableSession = true)]
- public string _GetValue(string strInputValue)
- {
- if (Session["LoginState"] == null || Session["LoginState"].Equals(false))
- {
- return "无效的身份验证,请重试!";
- }
- else
- {
- string strReturnValue = strInputValue + "@CopyRight By BanLao 2010";
- return strReturnValue;
- }
- }
- #endregion
调用该服务,
- WebLogon.Service This_Service = new WebLogon.Service();
- This_Service.CookieContainer = new System.Net.CookieContainer();
- if (This_Service.CheckLogin("admin", "123456"))
- {
- Response.Write(This_Service._GetValue("This is BanLao's Test Application For Session. "));
- }
当运行这个WebForm时,如果用户名和密码是正确的我们将看到:
This is BanLao's Test Application For Session. @CopyRight By BanLao 2010
否则
无效的身份验证,请重试!
注:如果需要多个合法用户,可以在WebService中声明判断即可
调用WebService时加入身份验证,以拒绝未授权的访问的更多相关文章
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- 动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
[导读]ServiceDescriptionImporter是创建Web Service 时使用的类,它是引用继承System.Web.Services 当我将VS2005里写的一段代码放在VS201 ...
- 无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误
问题描述: 我使用的是修改hosts,模拟真实网址来进行调试的.具体是这样的:我修改hosts文件,把某个域名,如www.163.com映射为127.0.0.1,然后在IIS信息管理器中,创建一个网站 ...
- C#调用WebService时插入cookie
SOAPUI插入Cookie的方法 SOAP插入cookie的方法如下,点击Head,点击加号,然后直接设置就可以了. C#中调用webService时插入Cookie 由于调用的时候必须要带上coo ...
- Postman调用WebService,包括头验证部分
Postman调用WebService时,Body中选择Raw,最右端选择XML(txt/xml),然后把某个方法显示在页面的xml拷贝到请求框中即可,如下图: 以下是postman中的设置,
- WinForm客户端调用 WebService时 如何启用Session
WinForm客户端调用 WebService时 如何启用Session 摘自: http://www.cnblogs.com/swtseaman/archive/2011/04/18/2020176 ...
- ABAP调用WebService时日期类型问题
在使用ABAP调用WebService时, 提示CX_SY_CONVERSION_NO_DATE_TIME,意思是日期格式不能转化. 究其原因是ABAP里没有相应的数据类型与WebService描述里 ...
- 解决win7远程桌面连接时发生身份验证错误的方法
远程桌面连接,是我们比较常用的一个功能了,但有时突然不能用了,以下是我遇到该问题,并解决该问题的方法.连接时报的是“发生身份验证错误,要求的函数不受支持”,解决之后细想一下,该问题好像是在我在电脑上安 ...
- Web服务器使用基于纯文本表单的身份验证——.net(未完待续)
asp.net 表单验证方式 Asp.net的身份验证有有三种,分别是"Windows | Forms| Passport",其中又以Forms验证用的最多,也最灵活. 根据实际需 ...
随机推荐
- Linux中进程的几种状态
linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...
- face morhper
图像变形背后的想法很简单.给定两个图像,我们想通过将图像和混合来创建中间图像.图像的混合和由参数控制的是在0和1之间().当为0时,变形看起来像,而当为1 时,变形看起来像.天真的,您可以在每个像素上 ...
- python的xpinyin模块:汉字转拼音
pypinyin 1.安装 pip install pypinyin 2.使用方法 >>> from pypinyin import ...
- SQLPrompt 最新版下载地址
https://download.red-gate.com/SQLPromptDownload.exe
- Android平台云端打包证书使用说明
原贴:https://ask.dcloud.net.cn/article/35985 Android平台云端打包证书使用说明 分类:HBuilderX 证书 Android 签名证书是一个应用的所有者 ...
- memcpy字节序问题
/* memcpy用法详解 */ #include <stdio.h> #include <stdlib.h> #include <string.h> //memc ...
- linux硬盘分区与格式化
linux硬盘分区与格式化: 1. 设备管理 在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘.光驱等 IDE 或 SCSI 设备也不例外. Linux 把各种 IDE 设备分配了一 ...
- Linux系统调优——网络(四)
(1).查看网络(Network)运行状态相关工具 1)nload监控总体带宽使用情况 nload需要自己安装,而且在安装前需要安装epel-release [root@youxi1 ~]# yum ...
- Python - Django - JsonResponse 对象
用 json 模块和 HttpResponse 返回生成的 json views.py: from django.shortcuts import render, HttpResponse impor ...
- centos上为新创建的用户(git)指定根目录并生成公钥和私钥
1.修改用户的根目录 vim /etc/passed 2.su git 3.ssh-keygen -t rsa ssh-keygen -t rsa 4.如图所示,如果要实现无密码访问git仓库,把公钥 ...