微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WEBSERVICES 身份验证

调用Web Serivices时,往往需要身份验证,使得通过验证的用户才能调用你Web Serivices中的方法.当然你可以通过将参数添加到每个需要自定义身份验证方案的Web services方法中去,这需要花费很大的精力.

本文参看了IssueVision

使用了非常常用而且有效便捷的方法-----使用SoapHeader来实现自定义身份验证数据的传递.

主要步骤:

 

1首先定义自己的验证类:包括用户名密码

using System.Text;
using System.Web.Services.Protocols;

namespace Model
{
    public   class MySoapHeader: SoapHeader
    {
        public  string  UserName
        { get;
          set;
        }
        public  string  PassWord
        {
            get;
            set;
        }

      
    }
}

2:在自己的WEBSERVICES中写入该类:

如:

  [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 WebService1 : System.Web.Services.WebService
    {

        public Model.MySoapHeader MyHeader;

}

3:添加验证方法

在服务器端APP.CONfig中配置

如下:

 <add key ="UserName" value="123"/>
   <add key="PassWord" value ="123"/>

自己添加一个验证方法

  public static void VerifySoapHeader(Model.MySoapHeader MyHeader)
        {
            string name = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
            string pass = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();
            if (MyHeader != null && MyHeader.PassWord != null && MyHeader.UserName != null)
            {
                if (name == MyHeader.UserName && pass == MyHeader.PassWord)
                {
                   
                }
                else
                {
                    throw new Exception("验证信息错误");
                }
            }
            else
            {
                throw new Exception("验证信息错误");
            }


        }

4:在WEBSERVICES中添加SOAP头和验证方法

      [WebMethod]
        [SoapHeader("MyHeader")]   //用于验证soap头
        public DataTable Select()
        {
            SoapHeaderVerify.VerifySoapHeader(this.MyHeader);   //验证
            return BLL.BTest.Select();

           
        }

 

 

5在客户端添加如下代码

a在app.config

添加

<appSettings>
    <add key="UserName"  value="123"/>
    <add key="PassWord" value="123" />
  </appSettings>

其次:在窗口中添加

       localhost.WebService1SoapClient client;
        localhost.MySoapHeader MyHeader;

           client = new localhost.WebService1SoapClient();
                MyHeader = new localhost.MySoapHeader();
                MyHeader.UserName = System.Configuration.ConfigurationManager.AppSettings["UserName"].ToString();
                MyHeader.PassWord = System.Configuration.ConfigurationManager.AppSettings["PassWord"].ToString();

 

然后在调用WEBSERVICES的方法的时候把soap头加上就行了:

如:

client.Select(MyHeader);

 

其它的参考资料:

http://www.cnblogs.com/chhuic/archive/2009/09/28/1576050.html

http://space.itpub.net/?uid-12639172-action-viewspace-itemid-157121

http://developer.51cto.com/art/200908/141829.htm

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐