思路:客户端使用header或者form讲验证信息传入api,在权限验证过滤中进行处理,代码示例:

定义过滤器

 public class ApiFilter1 : System.Web.Http.AuthorizeAttribute
{ protected override bool IsAuthorized(HttpActionContext actionContext)
{
var content = actionContext.Request.Properties["MS_HttpContext"] as HttpContextBase;
//var userName = content.Request.Headers["loginName"]; var user = content.Request.Form["userName"];
var password = content.Request.Form["password"];
//return base.IsAuthorized(actionContext);
//return userName == "wilson" && password == "123";
return base.IsAuthorized(actionContext);
        }

        //public override void OnAuthorization(HttpActionContext actionContext)
//{
// var content = actionContext.Request.Properties["MS_HttpContext"] as HttpContextBase;
// var UserName = content.Request.Form["UserName"]; // //base.OnAuthorization(actionContext);
//} protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
base.HandleUnauthorizedRequest(actionContext);
}
}

定义api方法

 [HttpPost]
[ApiFilter1]
public string GetUserById2(InputPara val)
{
return JsonConvert.SerializeObject(val);
}

ajax客户端调用示例

  function testAjax() {
$.ajax({
headers:{"loginName": "wilson", "password": "1234"},
type: "post",
url: "/api/user/GetUserById2",
data: { "userName": "wilson", "password": "1234" },
success: function (data) {
alert(JSON.stringify(data));
}
}); }
var content = actionContext.Request.Properties["MS_HttpContext"] as HttpContextBase;
/*
* 使用流写入的数据无法通过Form参数获取,只能通过流读取
*/
using (MemoryStream ms = new MemoryStream())
{
content.Request.InputStream.CopyTo(ms);
byte[] paraContent = ms.ToArray();
Encoding encoding = Encoding.UTF8;
string val = encoding.GetString(paraContent);
}

asp.net web api 权限验证的方法的更多相关文章

  1. .net web api 权限验证

    做一个登录权限验证. 开始吧. using System; using System.Collections.Generic; using System.Drawing; using System.D ...

  2. ASP.NET Web API模型验证以及异常处理方式

    ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations. 具体来说,比如有:[Required(Erro ...

  3. ASP.NET Web API 提升性能的方法实践

    ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web ...

  4. ASP.NET Web API 框架研究 Action方法介绍

    在根据请求解析出匹配的Controller类型并创建实例后,要在该Controller类型中的众多Action方法中选择与请求匹配的那一个,并执行,然后返回响应. Action方法,其元数据,主要包括 ...

  5. ASP.NET Web API身份验证和授权

    英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-a ...

  6. ASP.NET Web API 安全验证之摘要(Digest)认证

    在基本认证的方式中,主要的安全问题来自于用户信息的明文传输,而在摘要认证中,主要通过一些手段避免了此问题,大大增加了安全性. 1.客户端匿名的方式请求 (无认证) HTTP/ Unauthorized ...

  7. asp.net Web API 身份验证 不记名令牌验证 Bearer Token Authentication 简单实现

    1. Startup.Auth.cs文件 添加属性 1 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; ...

  8. ASP.NET Web API 数据验证

    第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) ...

  9. ASP.NET Web API 安全筛选器

    原文:https://msdn.microsoft.com/zh-cn/magazine/dn781361.aspx 身份验证和授权是应用程序安全的基础.身份验证通过验证提供的凭据来确定用户身份,而授 ...

随机推荐

  1. pfSense-2.4.4安装教程

    一.说明 1.1 pfSense是什么 pfSense是基于FreeBSD的.开源中最为可靠(World's Most Trusted Open Source Firewall)的.可与商业级防火墙一 ...

  2. Linux c 从文件当中读取任意一行的数据

    代码如下 #include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/ty ...

  3. C# 中的冒泡排序

    int num; , , , , , , , , , }; ; i < arr.Length; i++) { ; j < arr.Length; j++) { if (arr[j] > ...

  4. .net反编译的九款神器

    本人搜集了下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Refle ...

  5. Com 调用word和excel

    using Microsoft.Office.Interop.Word;using System;using System.Collections.Generic;using System.Compo ...

  6. SqlServer表中添加新字段

    表中添加新字段ALTER TABLE 表名 ADD 字段名 VARCHAR(20) NULL 表中添加自增idalter table lianxi add id int primary key IDE ...

  7. STL的内存管理

    SGI STL 的内存管理 http://www.cnblogs.com/sld666666/archive/2010/07/01/1769448.html 1. 好多废话 在分析完nginx的内存池 ...

  8. 对TCP协议握手的理解(转)

    reference:https://www.cnblogs.com/awkflf11/p/9191708.html 目录: 31.Tcp握手的一些问题? 21.Tcp三次握手及SYN攻击: 四次握手? ...

  9. 补码的来源以及为什么byte的最小值是-128

    1.        有符号数和无符号数 我们的实数分为正数和负数和0三部分 Byte数据类型一共有8位,如果是无符号数,最大可以表示的数为11111111 = 256 -1 = 255 无符号数代指不 ...

  10. postman接口测试基础知识

    接口文档访问地址:http://doc.nnzhp.cn/index.php?s=/6&page_id=8 1.什么是接口:从数据库里面取数据或是插入数据 接口测试:测接口一定要有接口文档-- ...