解决方案 »

  1.   

    你可以在webservice中做判断呀,如果你不想让别人使用,比如 要求webservice中的方法要传入用户ID、密码什么的
      

  2.   

    public class APPWebService : System.Web.Services.WebService
        {        [WebMethod]
            [System.Web.Services.Protocols.SoapHeader("header")]
            public string helloword()
            {
                if (soap()) //判断穿过来的密码是否正确
                {
                    return "helloword";
                }
                return "接口调用出错";
            }        /// <summary>
            /// soap头身份验证
            /// </summary>
            /// <returns></returns>
            public bool soap()
            {
                if (header == null)
                {
                    return false;
                }
                if (header.ValideUser(header.keycode))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }}public class MySoapHeader : SoapHeader
        {
            private string password = "123456";
            public MySoapHeader()
            {
                //  
                //TODO: 在此处添加构造函数逻辑  
                //  
            }
            public string keycode;
            public bool ValideUser(string key)
            {
                if (key == password)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
      

  3.   

        不想一个一个方法的验证可以写个基类,让写的webservice继承,基类构造方法中判断。
      

  4.   

       用HTTPS就可以了,加上client authentication。Web services本身有个proposal,就是在header中加上签名的。   搜到的.
      

  5.   

    前台如何在 header 里设置账户和密码
      

  6.   


    若若都问下 你设置了所谓的账号密码..那么 软件本身post的时候 我依然可以抓包(header)看到所谓的值吧...既然看到值了 不管明文与否..我都可以模拟..所以你这技能还是不能实现...
      

  7.   

    创建用户登陆的Web控件
      protected void Button1_Click(object sender, EventArgs e)//获取Web.config中配置的数据库连接字符串
        {
            string sqlstr = System.Configuration.ConfigurationManager.AppSettings["con"].ToString();
            SqlConnection conn = new SqlConnection(sqlstr);//连接数据库
            conn.Open();                                   //打开数据库
            SqlCommand cmd = new SqlCommand();             //创建SqlCommand对象
            cmd.Connection = conn;                          //设置该对象使用conn连接数据库
            cmd.CommandType = CommandType.Text;             //设置类型
            cmd.CommandText = "select count(*) from Tb_Login where UseName='" + txtUserName.Text.Trim() + "' and UsePassword='"+txtPwd.Text.Trim()+"'";
    //设置sql语句
            int flag = int.Parse(cmd.ExecuteScalar().ToString());//执行sql语句并获取返回值
            if (flag > 0)                      //如果大于0
            {
                Page.ClientScript.RegisterStartupScript(this.Parent.GetType(), "", "alert('登录成功');", true);//说明登陆成功
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.Parent.GetType(), "", "alert('登录失败');", true);//否则登陆失败
            }
            conn.Close();//关闭连接
        }