• ASP.NET如何给WebService添加用户名和密码的安全验证
  • 发布于 2个月前
  • 77 热度
    0 评论
  • 林勇
  • 0 粉丝 34 篇博客
  •   

我们在使用WebService进行数据交换时,一般基于安全的原因,一般都希望对外公布的WebService能加个用户名和密码的验证,这样就可以防止匿名用户的调用,那么在.NET中该如何给WebService添加用户名和密码的安全验证呢?其实只要给WebService添加一个SoapHeader就可以了,具体步骤如下:

1.构建一个SoapHeader对象

我这里的用户名和密码是采用硬编码的方式,大家在实际的应用中可以根据自己的需要把用户名和密码存储在数据库中


  public class MySoapHeader : SoapHeader
    {
        private string _UserName;
        private string _Password;
        public MySoapHeader()
        {
            //构造函数
        }
        public MySoapHeader(string name, string pwd)
        {
            _UserName = name;
            _Password = pwd;
        }
        public string UserName
        {
            get
            {
                return _UserName;
            }
            set
            {
                _UserName = value;
            }
        }
        public string PassWord
        {
            get
            {
                return _Password;
            }
            set
            {
                _Password = value;
            }
        }
        public bool Authenticated
        {
            get
            {
                if ((_UserName == ConfigurationManager.AppSettings["UserName"]) && (_Password == ConfigurationManager.AppSettings["Password"]))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
        public bool ValideUser(string in_UserName, string in_PassWord)
        {

            if ((in_UserName == ConfigurationManager.AppSettings["UserName"]) && (in_PassWord == ConfigurationManager.AppSettings["Password"]))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

2.在WebService中把这个SoapHeader加入的WebService方法中

具体代码如下:

     public MySoapHeader soapHeader;
        [WebMethod]
        [SoapHeader("soapHeader")]
        public bool UploadFile(byte[] data, string fileName, string folderName)
        {
            if (soapHeader.Authenticated)
            {
                try
                {
                    if (data.Length > 0)
                    {
                        string filePath = Server.MapPath("~/" + fileName);
                        if (!Directory.Exists(Server.MapPath("~/" + folderName)))
                        {
                            Directory.CreateDirectory(Server.MapPath("~/" + folderName));
                        }
                        FileStream fs = File.Create(filePath);
                        fs.Write(data, 0, data.Length);
                        fs.Close();
                    }
                    return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }



用户评论