方法一:SoapHeader

辅助类:MySoapHeader

     //SoapHeader 添加引用
using System.Web.Services.Protocols; #region 配置登录标头 public class MySoapHeader:SoapHeader
{
private string _strUserName = string.Empty;
private string _strPassWord = string.Empty; #region 构造方法
public MySoapHeader() { } public MySoapHeader(string userName, string passWord)
{
_strUserName = userName;
_strPassWord = passWord;
}
#endregion #region 构造用户名|密码
/// <summary>
/// 用户名
/// </summary>
public string UserName
{
get { return _strUserName; }
set { _strUserName = value; }
}
/// <summary>
/// 密码
/// </summary>
public string PassWord
{
get { return _strPassWord; }
set { _strPassWord = value; }
}
#endregion #region 检测是否正常登录
public bool CheckLogin()
{
if (_strUserName == "hkl" && _strPassWord == "")
{
return true;
}
else return false;
}
#endregion } #endregion

WebService代码

         public MySoapHeader myHeader = new MySoapHeader();

         [System.Web.Services.Protocols.SoapHeader("myHeader")]
[WebMethod(Description = "判断用户是否开通", EnableSession = true)]
public string GetValue(string strInputValue)
{
if (myHeader.CheckLogin())
{
string strReturnValue = strInputValue + "@身份验证已通过";
return strReturnValue;
}
else return "身份无效,请重试!";
}

新建一个web网页并添加web引用,在pageload方法中添加如下代码

             localhost1.MySoapHeader myHeader = new localhost1.MySoapHeader();
myHeader.UserName = "hkl";
myHeader.PassWord = ""; localhost1.Service1 myTest = new localhost1.Service1();
myTest.MySoapHeaderValue = myHeader;
Response.Write(myTest.GetValue("This's my test Application for SoapHeader."));

运行即可查看结果。

方法二:Session

  WebService代码

         [WebMethod(Description = "检测是否通过验证", EnableSession = true)]
public bool CheckLogin(string strUserName, string strPassWord)
{
if (strUserName.Equals("xxx") && strPassWord.Equals(""))
{
Session["LoginState"] = true;
}
else Session["LoginState"] = false; return (bool)Session["LoginState"];
} [WebMethod(Description = "测试连接", EnableSession = true)]
public string GetValue(string strInputValue)
{
if (Session["LoginState"] == null || Session["LoginState"].Equals(false))
{
return "无效身份,请重试!";
}
else
{
string strReturnValue = strInputValue + "@身份验证已通过";
return strReturnValue;
}
}

新建一个web网页并添加web引用,在pageload方法中添加如下代码

             localhost2.Service2 myTest = new localhost2.Service2();
myTest.CookieContainer = new System.Net.CookieContainer();
if (myTest.CheckLogin("xxx", ""))
{
Response.Write(myTest.GetValue("This is my test application for session."));
}

运行即可查看结果。

为WebService添加身份验证的两种方法的更多相关文章

  1. PHP中对用户身份认证实现两种方法

    用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问.通常,我们可以采用内置于WEB服务器的基于HTTP协议的用户身份验证机制.     当访问者浏览受保护页面时,客户端浏览器会弹出对话 ...

  2. WebGL中添加天空盒的两种方法

    天空盒 的添加可以让模型所在的场景非常漂亮,而其原理也是非常简单的,相信看完下面代码就可以明白了. 说到天空盒的两种方法,倒不如说是两种写法,分别用了纹理加载的两个方法:loadTexture和loa ...

  3. DataGridView动态添加新行的两种方法

    简单介绍如何为DataGridView控件动态添加新行的两种方 法: 方法一: int index=this.dataGridView1.Rows.Add();this.dataGridView1.R ...

  4. C#连接sqlserver windows 和 sqlserver 身份验证的两种连接字符串

    //sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;datab ...

  5. C#连接sql server windows 和 sqlserver 身份验证的两种连接字符串

    //sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;datab ...

  6. MongoDB添加secondary节点的两种方法

    前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong ...

  7. windows 7中添加新硬件的两种方法(本地回环网卡)

    最近在windows7上使用VMwareWorkstation7玩一些实验,遇到需要配置不同网络的问题. 因为在windows2003server上习惯使用要本地回环网卡了,那就想着在Windows7 ...

  8. ASP.NET中身份验证的三种方法

    Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权 ...

  9. ace+validate表单验证(两种方法)

    //修改密码(直接在validate中验证提交) $("#changePassword").on(ace.click_event, function() { var html = ...

随机推荐

  1. Learning-Python【6】:Python数据类型(2)—— 列表、元组

    一.列表类型 1.用途:记录多值,比如人的多个爱好 2.定义方式:在[ ]内用逗号分隔开多个任意类型的值 li = [1, 2, 3] 3.常用操作+内置方法 优先掌握的操作: 1)按索引存取值:可以 ...

  2. JAVA代码覆盖率工具JaCoCo-原理篇

    JAVA代码覆盖率工具JaCoCo-原理篇 1.2 JAVA覆盖率工具介绍 1.3.3 Apache Maven方式 1.3.4 Eclipse EclDmma Plugin方式 JAVA代码覆盖率工 ...

  3. Java使用Sockt进行通信(2)

    使用TCP协议编写Sockt TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. ...

  4. 浅谈Static

    A: 使用场景 static可以修饰成员变量和成员方法. 什么时候使用static修饰成员变量? 加static修饰成员的时候,这个成员会被类的所有对象所共享.一般我们把共性数据定义为静态的变量 什么 ...

  5. inline-block和float 布局的选择

    浮动通常表现正常,但有时候搞起来会很纠结.特别是处理内部容器中的浮动,比如对一排图片使用浮动后对齐出现问题.Inline-block是我们的另一种选择.使用这种属性可以模拟部分浮动的特征,而不需要处理 ...

  6. [Struts2] <s:property>标签

    调用类中的属性,通过get方法调用,而非其属性名调用. 比如A类中有属性a1,a1的get方法是getA1Method(); 相应Action类中的get方法是getA1Action(). 那么需要通 ...

  7. scrapy中XMLFeedSpider

    爬取案例: 目标网站: url = 'http://www.chinanews.com/rss/scroll-news.xml' 页面特点: 先创建爬虫项目: 也可以查看爬虫类: 创建xmlFeed ...

  8. 『流畅的Python』第12章:继承的优缺点

  9. 为什么会出现container、injection技术?发展历史及未来发展趋势

    container 原因: 随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务 ...

  10. 在react/redux中使用Immutable

    在redux中使用Immutable 1.什么是Immutable? Immutable是一旦创建,就不能被更改的数据. 对Immutable对象的任何修改或添加删除操作都会返回一个新的Immutab ...