一般在项目中,制作的都是基于SOAP协议的webservices,其描述语言是WSDL。但是有时候在项目中,需要保证webservices的安全,需要对其进行进行验证,那么我们就要实现SoapHeader,具体的实现方式如下:

首先就是自定义一个类,继承自System.Web.Services.Protocols.SoapHeader ,然后在这个类中,通过暴露的公共属性和方法来进行校验。

其次就是在webservices主体方法中,添加对SoapHeader的验证的支持

最后直接在用户页面进行验证,调用方法即可。

首先,定义一个sSoapHeader类,暴露出其提供的公共验证字段,并提供验证方法:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace webServiceDemo
{
    public class sSoapHeader:System.Web.Services.Protocols.SoapHeader
    {
        private string _UserId = string.Empty;
        private string _UserPwd = string.Empty;         public sSoapHeader() { }         public string UserId
        {
            get
            {
                return _UserId;
            }
            set
            {
                _UserId = value;
            }
        }         public string UserPwd
        {
            get
            {
                return _UserPwd;
            }
            set
            {
                _UserPwd = value;
            }
        }         public void Initial(string username, string password)
        {
            UserId = username;
            UserPwd = password;
        }         public bool IsValid(string uid, string pwd, out string msg)
        {
            msg = "";
            if (uid == "admin" && pwd == "admin888")
            {
                return true;
            }
            else
            {
                msg = "对不起,你无法调用";
                return false;
            }
        }
        public bool IsValid(out string msg)
        {
            return IsValid(_UserId, _UserPwd, out msg);
        }     }
}

其次就是在webservice主体中,添加对此验证方法的支持


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols; namespace webServiceDemo
{
    /// <summary>
    /// Service1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
        public sSoapHeader s = new sSoapHeader();
        [SoapHeader("s")]   //这里就是添加验证方法的标志
        [WebMethod]
        public string HelloWorld(int a,int b)
        {
            string msg = "";
            if (!s.IsValid(out msg))
            {
                return msg;
            }
            return (a + b).ToString();
        }        
    }
}

在上图中,我已经标志的很清楚了[SoapHeader("s")] 就是添加验证方法的标志。

最后就是在用户页面中进行调用,引用完毕后,需要对soapheader暴露的公共属性方法进行赋值判断,最后调用即可。只要验证正确,便可以正常调用,否则则提示没有权限:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WEB
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            localhost.Service1 s = new WEB.localhost.Service1();
            localhost.sSoapHeader header = new WEB.localhost.sSoapHeader();
            header.UserId = "admin";
            header.UserPwd = "admin888";
            s.sSoapHeaderValue = header;
            Response.Write(s.HelloWorld(2,1));
        }
    }
}

WebService调用权限验证 SoapHeader的更多相关文章

  1. webservice 的权限验证

    1. http://blog.csdn.net/jaune161/article/details/25602655 2. http://wcp88888888.iteye.com/blog/13993 ...

  2. webservice 第一节 .net SoapHeader验证

    在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webservice中常用到 soapheader ...

  3. WebService 简单安全验证

    原文:WebService 简单安全验证 最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebServic ...

  4. WebService 之 身份验证

    在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑到了WebService是安全问题,很容易想到通过一组用户名与密码来防止非法用户的调用 . 一.Networ ...

  5. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  6. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

  7. ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...

  8. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

    理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...

  9. Web用户的身份验证及WebApi权限验证流程的设计和实现

    5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy   /// /// Controller的基类,用于实现适合业 ...

随机推荐

  1. android平台菜单返回键监听

    //声明 void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event); //实现 //按键控制(检测onKeyReleased有反 ...

  2. Lightoj 1004 - Monkey Banana Problem

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121396#problem/F http://lightoj.com/volume_showproblem.ph ...

  3. 提升html5的性能体验系列之五webview启动速度优化及事件顺序解析]

    webview加载时有3个事件.触发顺序为loading.titleUpdate.loaded.webview开始载入页面时触发loading,载入过程中如果title已经解析并赋予新值,则触发tit ...

  4. ActiveXObject函数详解(转)

    什么是 ActiveX 控件? ActiveX 控件广泛用于 Internet.它们可以通过提供视频.动画内容等来增加浏览的乐趣.不过,这些程序可能出问题或者向您提供不需要的内容.在某些情况下,这些程 ...

  5. MVC3 Razor 根据不同页面使用不同Layout

    _ViewStart.cshtml运行于每一Page前, 所以通常在这里先设置Layout   下面代码为特定的controller指定Index,Edit,Create的模板 即Index对应  _ ...

  6. windows 杀进程软件

    pchunter 电脑禁用u盘可用金山卫士开启.注册表

  7. linux shell——md5sum,sha1sum,sort,uniq (转)

    1.文件校验 1. md5sum eg: md5sum filename 注:生成一个128位的二进制位,即32位的十六进制字符串 1.验证文件的正确性: md5sum  file1 file2 &g ...

  8. ZOJ 3699 Dakar Rally(贪心)

    这是一道贪心题,他的贪心思想很容易想明白,我们保证油箱里的油始终是最便宜的我们最后的花费就能是最少的.实现方法就是:比如现在在i点,我们看邮箱满载能最远到达哪里,不妨设最远到达j,(j >= i ...

  9. hrbustoj 1125 循环小数 II(小数变分数+极限思想)

    #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> #i ...

  10. [其他]volatile 关键字

    用  volatile 关键字修饰函数 的作用是 告诉编译器该函数不会返回 , 让编译器能产生更好的代码 另外也能避免一些假警告信息,如未初始化的变量等