思路:客户端使用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. 主机连接虚拟机redis 服务器

    1. centos 虚拟机安装redis sudo yum install epel-release sudo yum update sudo yum install redis sudo syste ...

  2. npm 设置和取消代理配置

    设置代理npm config set proxy=http://127.0.0.1:8087npm config set registry=http://registry.npmjs.org12关于h ...

  3. vue-新建项目-构建-打包-环境切换

    一.新建项目 二.运行 npm install npm run start 三.多环境切换 踩坑后总结的方法.. 首先看到package.json 前面的参数都是命令.比如“start”的意思就是np ...

  4. flask-session 在redis中存储session

    依赖: Flask Flask-Session redis import os from flask import Flask, session, request from flask_session ...

  5. JavaScript原型与闭包相关

    1什么是对象 js中的值分为引用值和原始值 原始值:undefined  null  Boolean  string  number  原始值无法更改 存放在栈中 引用值:Array  Object  ...

  6. traceroute命令初探

    一.学习目标 了解traceroute基本概念 了解traceroute工作原理及详细过程 熟悉traceroute常用命令 一些注意点 二.traceroute基本概念 traceroute (Wi ...

  7. excel图片链接转图片

    Sub LoadImage() Dim HLK As Hyperlink, Rng As Range For Each HLK In ActiveSheet.Hyperlinks '循环活动工作表中的 ...

  8. pycharm 设置参数,快捷键

    pycharm 设置参数 当编写代码的时候出现红色下划线提示,表示有异常,此时需要导入此模块 参数设置 设置完参数之后执行一下看看效果 这里面0为脚本本身,1为刚才设置的参数hello 快捷键设置 常 ...

  9. Python之DataFrame常用方法小结

    https://blog.csdn.net/a786150017/article/details/78573055

  10. 【leetcode】427. Construct Quad Tree

    problem 427. Construct Quad Tree 参考 1. Leetcode_427. Construct Quad Tree; 完