Web Service身份验证

Web Service是政府,企业,个人提供的在线应用服务,其他公司、软件都能通过Internet来访问并使用服务。针对于有些公司某些数据只允许授权的企业或人使用,所以我们需要进行身份验证

           第一种方式:在Web Service引入SoapHeader

                 1.如下图,我们实现一个用于实现身份验证的类MySoapHeader,定义两个成员变量(UserName和Password),定义函数ValideUser用来检测使用服务的程序的Soap标头的数据是否被授权使用服务

    //实现一个用来验证身份的类
    public class MySoapHeader:SoapHeader
    {
        public MySoapHeader()
        { 
            //
            //   TODO:在此添加构造函数
            //
        }
        public string UserName;//用户名

        public string Password;//密码

        /// <summary>
        /// 判断用户名和密码是否正确
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public bool ValideUser(string username, string password)
        {
            if ((username == "admin") && (password == "admin"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

  

            2.创建Verification.asmx。

    

    public class Verification : System.Web.Services.WebService
    {
        public MySoapHeader header;  //定义用户身份验证变量header


        [WebMethod(Description="用户验证测试")]
        [System.Web.Services.Protocols.SoapHeader("header")]   //用户身份验证的Soap头
        public string HelloWorld(string contents)
        {
            if (header.ValideUser(header.UserName, header.Password))
            {
                return contents + "—执行了";
            }
            else
            {
                return "你没有权限访问!";
            }
        }
    }

     3.创建一个客户端—WebForm的页面

          

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        VerificationServer.Verification verTest = new VerificationServer.Verification();//添加web引用

        VerificationServer.MySoapHeader header = new VerificationServer.MySoapHeader();//web引用创建soap头对象

        //设置soap头部变量
        header.UserName = "admin";  //用户名

        header.Password = "admin";  //密码

        verTest.MySoapHeaderValue = header;

        Response.Write(verTest.HelloWorld("我是老王"));
    
    }
}

  

原文地址:https://www.cnblogs.com/shikangjie/p/5691578.html