WebService head加密,可以对 WebService设置访问用户名和密码,增强 WebService的安全性 使 WebService只能被授权用户使用。
具体实现步骤:
1、 定义一个 soapheader派生类用来实现 WebService访问权限验证
具体实现步骤:
1、 定义一个 soapheader派生类用来实现 WebService访问权限验证
- <span style="font-size:10px;">using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- /// <summary>
- ///MySoapHeader 的摘要说明
- /// </summary>
- public class MySoapHeader:System .Web .Services .Protocols .soapHeader
- {
- private string _uname = string.Empty;//webservice访问用户名
- string Uname
- {
- get { return _uname; }
- set { _uname = value; }
- }
- string _password = //webservice访问密码
- string Password
- {
- return _password; }
- set { _password = value; }
- }
- public MySoapHeader()
- //
- //Todo: 在此处添加构造函数逻辑
- public MySoapHeader(string uname, string upass)
- init(uname, upass);
- void init(this._password = upass;
- this._uname = uname;
- //验证用户是否有权访问内部接口
- bool isValid(string upass,153); font-weight:bold; background-color:inherit">out string msg)
- msg = "";
- if (uname == "admin" && upass =="admin")
- {
- return true;
- }
- else {
- msg = "对不起!您无权调用此WebService!";
- false;
- //验证用户是否有权访问外部接口
- string msg)
- return isValid(_uname, _password,out msg);
- }
- </span>
2、 定义有需要验证的 WebService。
copy
- using System.Collections;
- using System.Linq;
- using System.Web.Services;
- using System.Web.Services.Protocols;
- using System.Xml.Linq;
- ///test 的摘要说明
- [WebService(Namespace = "http://tempuri.org/")]
- [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
- //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
- // [System.Web.Script.Services.ScriptService]
- class test : System.Web.Services.WebService {
- public test () {
- //如果使用设计的组件,请取消注释以下行
- //InitializeComponent();
- public MySoapHeader myheader = new MySoapHeader();
- [WebMethod]
- string HelloWorld() {//普通WebService,无需验证
- return "Hello World";
- [SoapHeader("myheader")]//加入此头部的WebService需要验证,不加则为普通WebService无需验证
- [WebMethod(Description = "根据产品编号查询产品的价格", EnableSession = true)]
- string GetProductPrice2(string ProductId)
- string msg = "";
- //验证是否有权访问
- if (!myheader.isValid(out msg))
- return -1;//返回错误信息
- return ProductId;
- }
- </span>