zoukankan      html  css  js  c++  java
  • 实现带有身份验证的WebService

    找了一下关于Asp.NET Forms  WebService,大部分都是转贴“chinadhf”的下篇文章:
    使用ASP.Net Forms模式实现WebService身份验证

    其中提到:
    System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();

    MyService.WebService service 
    = new App.MyService.WebService();
    service.CookieContainer 
    = cookieContainer;

    但是,我怎么也没有找到代理实体的CookieContainer属性,惭愧!给各路牛人发邮件、回帖、留消息,都没有人答复,遗憾!!

    好在又从网上找到一些资料可以解决我的问题,虽然我也觉得不是最佳解决办法。现在共享出来:

    1、创建一个SoapHeader的派生类
     public class CredentialSoapHeader : SoapHeader
     {
      public string UserName
      {
       get;
       set;
      }

      public string Password
      {
       get;
       set;
      }
     }

    2、在需要验证的webService类里面添加验证属性
    3、在需要验证的Web方法上添加标签  [SoapHeader("Credentail")]
     public class Login : System.Web.Services.WebService
     {
      public CredentialSoapHeader Credentail
      {
       get;
       set;
      }

      [WebMethod]
      [SoapHeader("Credentail")]
      public string HelloWorld()
      {
       this.VerifyCredential(this);
       return "Welcome " + this.Credentails.UserName;
      }
      /// <summary>
      /// 验证是否合法
      /// </summary>
      /// <param name="s"></param>
      private string VerifyCredential(Login s)
      {
       if (s.Credentails == null || s.Credentails.UserName == null || s.Credentails.UserPassword == null)
       {
        return "验证失败:无用户认证信息";
       }

       //在这里可以进一步进行自定义的用户验证 
       return "OK";
      }
     }
    这样,在客户端代理实体调用该方法时,就需要提供一个CredentialSoapHeader 的对象了,在服务端的验证方法里,我们可以添加相应的身份验证机制。

  • 相关阅读:
    linux办公软件的使用和病毒防范
    需要了解的基本礼仪素养
    遗留问题
    shell基本命令
    shell编程
    遇到过得问题
    mac电脑操作
    Linux编程
    BZOJ 1601 [Usaco2008 Oct]灌水 (建图+mst)
    BZOJ 2653 middle (可持久化线段树+中位数+线段树维护最大子序和)
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/1270332.html
Copyright © 2011-2022 走看看