对WebAPI接口的开放当然要做控制,需要身份验证如何做到呢、

进行身份验证后的

服务器拒绝了访问!

第一步添加一个CustomHandler.cs的类

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Web;
   5:  using System.Threading.Tasks;
   6:  using System.Net.Http;
   7:  using System.Text;
   8:  using System.Net;
   9:   
  10:  namespace MvcApplication1.Handler
  11:  {
  12:      public class customHandler : DelegatingHandler 
  13:      {
  14:          protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
  15:          {
  16:              int matchHeaderCount = request.Headers.Count((item) =>
  17:              {
  18:                  if ("key".Equals(item.Key))
  19:                  {
  20:                      foreach (var str in item.Value)
  21:                      {
  22:                          if ("11234".Equals(str))
  23:                          {
  24:                              return true;
  25:                          }
  26:                      }
  27:                  }
  28:                  return false;
  29:              });
  30:              if (matchHeaderCount > 0)
  31:              {
  32:                  return base.SendAsync(request, cancellationToken);
  33:              }
  34:              return Task.Factory.StartNew<HttpResponseMessage>(() => { return new HttpResponseMessage(HttpStatusCode.Forbidden); });
  35:          }
  36:      }
  37:  }

第二步部署一下就ok了

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Web;
   5:  using System.Web.Http;
   6:  using System.Web.Mvc;
   7:  using System.Web.Optimization;
   8:  using System.Web.Routing;
   9:  using MvcApplication1.Handler;
  10:   
  11:  namespace MvcApplication1
  12:  {
  13:      // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
  14:      // 请访问 http://go.microsoft.com/?LinkId=9394801
  15:   
  16:      public class WebApiApplication : System.Web.HttpApplication
  17:      {
  18:          protected void Application_Start()
  19:          {
  20:              AreaRegistration.RegisterAllAreas();
  21:   
  22:              WebApiConfig.Register(GlobalConfiguration.Configuration);
  23:              FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  24:              RouteConfig.RegisterRoutes(RouteTable.Routes);
  25:              BundleConfig.RegisterBundles(BundleTable.Bundles);
  26:              

GlobalConfiguration.Configuration.MessageHandlers.Add(new customHandler());

  27:          }
  28:      }
  29:  }

添加最后一行就ok了。

客户端访问也只要在

request的Headers添加验证信息就可以了,当然android客户端具体怎么访问还在学习中。

												

WebAPI身份验证的更多相关文章

  1. Nginx集群之SSL证书的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi身份验证... 1 3       AuthorizeAttribute类... 2 4       ...

  2. Nginx集群之基于Redis的WebApi身份验证

    目录 1       大概思路... 1 2       Nginx集群之基于Redis的WebApi身份验证... 1 3       Redis数据库... 2 4       Visualbox ...

  3. SNF快速开发平台MVC-EasyUI3.9之-WebApi身份验证问题解决方案

    在我们的整体bs框架当中前端采用的是MVC+WebApi的处理方式.WebApi使用起来确实很方便但也会有新的麻烦事,就是身份验证. 如果没有启用身份认证,那么任何匿名用户只要知道了我们服务的url, ...

  4. c# WebApi之身份验证:Basic基础认证

    为什么需要身份认证 身份认证是为了提高接口访问的安全性,如果没有身份验证,那么任何匿名用户只要知道服务器的url,就可以随意访问服务器,从而访问或者操作数据库,这会是很恐怖的事. 什么是Basic基础 ...

  5. 关于WEB Service&WCF&WebApi实现身份验证之WebApi篇

    之前先后总结并发表了关于WEB Service.WCF身份验证相关文章,如下: 关于WEB Service&WCF&WebApi实现身份验证之WEB Service篇. 关于WEB S ...

  6. ASP.NET WEBAPI 的身份验证和授权

    定义 身份验证(Authentication):确定用户是谁. 授权(Authorization):确定用户能做什么,不能做什么. 身份验证 WebApi 假定身份验证发生在宿主程序称中.对于 web ...

  7. 关于WEB Service&WCF&WebApi实现身份验证之WCF篇(2)

    因前段时间工作变动(换了新工作)及工作较忙暂时中断了该系列文章,今天难得有点空闲时间,就继续总结WCF身份验证的其它方法.前面总结了三种方法(详见:关于WEB Service&WCF& ...

  8. WebApi 登录身份验证

    前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...

  9. 转 Web用户的身份验证及WebApi权限验证流程的设计和实现

    前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...

随机推荐

  1. syslog-ng 学习心得与配置说明

    配置说明syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf 一.基础 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog ...

  2. nyoj_31

    题目描述:五个数求最值. #include <iostream> #include <algorithm> using namespace std; int main(){ ] ...

  3. iOS应用架构谈(二):View层的组织和调用方案(上)

    OS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第二篇,主要讲View层的组织和调用方案.上篇主要讲View层的代码结构. ...

  4. 多米诺(codevs 3052)

    题目描述 Description 一个矩形可以划分成M*N个小正方形,其中有一些小正方形不能使用.一个多米诺骨牌占用两个相邻的小正方形.试问整个区域内最多可以不重叠地放多少个多米诺骨牌且不占用任何一个 ...

  5. timestamp 类型的索引

    由这条语句datetime.strftime('2014/12/05','%Y/%m/%d')转换出来的索引 是pandas内置类型相同,如果使用datetime.strftime('2014/12/ ...

  6. AFNetworking(AFN)总结

    AFNetworking(AFN) ----主要做下载上传之用 //他是干啥的?发送请求,主要做下载上传之用 (苹果自带有获取服务器数据的方法NSURLConnection send,AFNetwor ...

  7. hdu 5653 Bomber Man wants to bomb an Array

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5653 题意:已知炸弹可以炸掉左边L个位置,右边R个位置,那么炸点炸掉的总数是L+R+1.给定每个炸弹的 ...

  8. 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:

    1.监听服务没有启动 windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务. 2.数据库实例没有启动 windo ...

  9. 浅谈 switch和if

    1.所有的switch 都可以用if 替换,但所有的if不一定能被switch替换 2.:switch case直接跳到对应的case值里面执行相应代码.而if语句会执行一条一条判断语句,直到匹配到对 ...

  10. EF – 1.模式

      3种数据库 code first model first database first       创建EF http://www.cnblogs.com/tangge/p/3834578.htm ...