为WebService添加身份验证的两种方法
方法一: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添加身份验证的两种方法的更多相关文章
- PHP中对用户身份认证实现两种方法
用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问.通常,我们可以采用内置于WEB服务器的基于HTTP协议的用户身份验证机制. 当访问者浏览受保护页面时,客户端浏览器会弹出对话 ...
- WebGL中添加天空盒的两种方法
天空盒 的添加可以让模型所在的场景非常漂亮,而其原理也是非常简单的,相信看完下面代码就可以明白了. 说到天空盒的两种方法,倒不如说是两种写法,分别用了纹理加载的两个方法:loadTexture和loa ...
- DataGridView动态添加新行的两种方法
简单介绍如何为DataGridView控件动态添加新行的两种方 法: 方法一: int index=this.dataGridView1.Rows.Add();this.dataGridView1.R ...
- C#连接sqlserver windows 和 sqlserver 身份验证的两种连接字符串
//sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;datab ...
- C#连接sql server windows 和 sqlserver 身份验证的两种连接字符串
//sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;datab ...
- MongoDB添加secondary节点的两种方法
前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong ...
- windows 7中添加新硬件的两种方法(本地回环网卡)
最近在windows7上使用VMwareWorkstation7玩一些实验,遇到需要配置不同网络的问题. 因为在windows2003server上习惯使用要本地回环网卡了,那就想着在Windows7 ...
- ASP.NET中身份验证的三种方法
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权 ...
- ace+validate表单验证(两种方法)
//修改密码(直接在validate中验证提交) $("#changePassword").on(ace.click_event, function() { var html = ...
随机推荐
- dump总结
•http://blog.csdn.net/lkforce/article/details/60878295 •日志文件生成 •方法1 •jmap -dump:format=b,file=201703 ...
- 【分布式搜索引擎】Elasticsearch写入和读取数据过程
一.Elasticsearch写人数据的过程 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2)coordinating node,对docum ...
- linux存储管理之文件系统
EXT3/4文件系统 ====================================================================================Ext3: ...
- 为什么会出现container/injection的思想?
1.容器的历史 容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的 ...
- 线程池threadPools
1.线程池是用来存储线程的容器 2.Executors.newFixedThreadPool(int n);创建线程池,并且设置线程池的容量为n 3.submit开启线程 4.会返回一个对象futur ...
- day08_python_1124
01 昨日内容回顾 文件操作 文件操作的流程: 1,打开文件创建文件句柄. 2,对文件句柄进行操作. 3,关闭文件句柄. 读, r r+ rb r+b read() 全部读取 read(n) 读取一部 ...
- unity中将多张图片进行椭圆运动
GameObject canvas; ; ; ; ; Dictionary<int,GO> storeItem; GameObject main; public static bool r ...
- PHP 第三方支付
以前事情比较繁忙,压根都没有时间去整理最近的工作. 最近稍微轻松点,就把自己在公司处理的支付业务拿出来,留个纪念,顺道回顾下以前自己支付的知识. 俗话说实践是检验整理的唯一标准,东西做的是否能用,只能 ...
- FC磁盘设备管理
本文转自:http://www.cactifans.org/linux/1071.html 转自EMC中文支持论坛 – https://community.emc.com/go/chinese 介 ...
- ssl证书安装到iis服务器
1.先购买ssl证书, 2.对付会先发一份邮件到你的邮箱,进行验证 3.再查看邮箱,会发现有了对应的证书文件. 附件会有一个压缩包,里面包含4份证书文件, 还有一个通配符的字符串. 4.下载之后, 先 ...