方法一: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. 《Java语言实现快速幂取模》

    快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程 ...

  2. Leetcode480-Binary Tree Paths-Easy

    480. Binary Tree Paths Given a binary tree, return all root-to-leaf paths. Example Example 1: Input: ...

  3. Linux md5sum 的用法

    MD5 算法常常被用来验证网络文件传输的完整性,防止文件被篡改.MD5 全称是报文摘要算法,此算法对任意长度 的信息逐位计算,产生一个二进制长度为 128 位(十六进制长度 32 位)的报文摘要,不同 ...

  4. Linux下更新Git

     查看git版本,卸载旧版本(如果没有安装git请直接到下一步) git --version yum remove git  安装依赖软件 yum install curl-devel expat-d ...

  5. 使用ByteArrayOutputStream解决IO乱码问题的踩坑记录

    经过:今天在用s3接口做ceph储存的时候,要实现一个io下载的接口.需要把InputStream转成byte[],一开始,是的写法是这样的: byte[] buf = new byte[(int) ...

  6. [原][工具][windows10安装][0x800F081F]windows 10 如何离线安装.net framework3.5 || 安装出现错误代码0x800F081F时如何解决

    参考解决方案:https://zhidao.baidu.com/question/1896669183365806820.html?fr=iks&word=win10%B0%B2%D7%B0+ ...

  7. springboot应用无故停止运行killed解决方法

    最近使用springboot开发了一个ip代理的程序,今天放到阿里云服务器上运行,多次出现应用运行突然停止的问题. 使用free -h 查看内存使用完全正常.重新运行监视CPU使用也正常.没有出现堆内 ...

  8. LOJ10155数字转换

    题目描述 如果一个数 x 的约数和 y (不包括他本身)比他本身小,那么 x 可以变成 y,y 也可以变成 x.例如 4 可以变为 3,1 可以变为 7.限定所有数字变换在不超过 n 的正整数范围内进 ...

  9. node基础知识-常用node命令

    node中js的组成部分:ECMAScript核心+全局成员+模块系统成员 浏览器中的js组成部分:ECMAScripts核心+BOM+DOM 常用node命令 cmd中进入REPL环境:直接输入no ...

  10. 汇编语言debug入门

    进入windows操作系统,因为我的虚拟机用的是win7 64位,所以装了一个Dos Box 的软件来执行这些指令. 输入debug回车,这样就进入了debug模式. 1: 输入 -r 查看或者修改寄 ...