WebService调用权限验证 SoapHeader
一般在项目中,制作的都是基于SOAP协议的webservices,其描述语言是WSDL。但是有时候在项目中,需要保证webservices的安全,需要对其进行进行验证,那么我们就要实现SoapHeader,具体的实现方式如下:
首先就是自定义一个类,继承自System.Web.Services.Protocols.SoapHeader ,然后在这个类中,通过暴露的公共属性和方法来进行校验。
其次就是在webservices主体方法中,添加对SoapHeader的验证的支持
最后直接在用户页面进行验证,调用方法即可。
首先,定义一个sSoapHeader类,暴露出其提供的公共验证字段,并提供验证方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace webServiceDemo
{
public class sSoapHeader:System.Web.Services.Protocols.SoapHeader
{
private string _UserId = string.Empty;
private string _UserPwd = string.Empty; public sSoapHeader() { } public string UserId
{
get
{
return _UserId;
}
set
{
_UserId = value;
}
} public string UserPwd
{
get
{
return _UserPwd;
}
set
{
_UserPwd = value;
}
} public void Initial(string username, string password)
{
UserId = username;
UserPwd = password;
} public bool IsValid(string uid, string pwd, out string msg)
{
msg = "";
if (uid == "admin" && pwd == "admin888")
{
return true;
}
else
{
msg = "对不起,你无法调用";
return false;
}
}
public bool IsValid(out string msg)
{
return IsValid(_UserId, _UserPwd, out msg);
} }
}
其次就是在webservice主体中,添加对此验证方法的支持
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols; namespace webServiceDemo
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
public sSoapHeader s = new sSoapHeader();
[SoapHeader("s")] //这里就是添加验证方法的标志
[WebMethod]
public string HelloWorld(int a,int b)
{
string msg = "";
if (!s.IsValid(out msg))
{
return msg;
}
return (a + b).ToString();
}
}
}
在上图中,我已经标志的很清楚了[SoapHeader("s")] 就是添加验证方法的标志。
最后就是在用户页面中进行调用,引用完毕后,需要对soapheader暴露的公共属性方法进行赋值判断,最后调用即可。只要验证正确,便可以正常调用,否则则提示没有权限:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WEB
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
localhost.Service1 s = new WEB.localhost.Service1();
localhost.sSoapHeader header = new WEB.localhost.sSoapHeader();
header.UserId = "admin";
header.UserPwd = "admin888";
s.sSoapHeaderValue = header;
Response.Write(s.HelloWorld(2,1));
}
}
}
WebService调用权限验证 SoapHeader的更多相关文章
- webservice 的权限验证
1. http://blog.csdn.net/jaune161/article/details/25602655 2. http://wcp88888888.iteye.com/blog/13993 ...
- webservice 第一节 .net SoapHeader验证
在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webservice中常用到 soapheader ...
- WebService 简单安全验证
原文:WebService 简单安全验证 最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebServic ...
- WebService 之 身份验证
在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑到了WebService是安全问题,很容易想到通过一组用户名与密码来防止非法用户的调用 . 一.Networ ...
- android loginDemo +WebService用户登录验证
android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...
- WebService 用户名密码验证
原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...
- ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...
- struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo
理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...
- Web用户的身份验证及WebApi权限验证流程的设计和实现
5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy /// /// Controller的基类,用于实现适合业 ...
随机推荐
- JSP 语法/标签
┣1.declaration Declaration定义了JSP脚本语言使用的变量和函数,这类似于Java中定义全局变量,或可以把它想像成pascal编程语言中的单元文件的interface部分.声明 ...
- System.Web.Optimization找不到引用怎么办?
Install-Package Microsoft.AspNet.Web.Optimization
- wince天气代码
#ifndef COMMON_H #define COMMON_H #include <Windows.h> typedef struct _operateInfo { HANDLE hS ...
- linux修改句柄数
linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [ ...
- Struts+Spring+Hibernate的Web应用执行过程
struts1和spring有两种整合的方法 一种是action和spring bean映射:一种是将action交给spring初始化 第一种方式:访问.do的URL->tomcat接收到r ...
- js 鼠标事件
<html><head lang="en"> <meta charset="UTF-8"> <title>< ...
- linux 备份系统
切换到root用户 切换到根目录 tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz -- ...
- linux下sed命令对文件执行文本替换
让我们看一下 sed 最有用的命令之一,替换命令.使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换.下面是该命令最基本用法的示例: $ sed -e ‘s/foo/bar/’ myfi ...
- Qt5:窗口居中显示
QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以move((desktop->width ...
- 自动获取访客QQ
http://jerring.cn/bizqq/index.html http://www.oicqzone.com/qqjiqiao/2015072322139.html