asp.net web api 权限验证的方法

思路:客户端使用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);
            //string userName = actionContext.Request.Properties["UserName"].ToString();
            //string password = actionContext.Request.Properties["Password"].ToString();
            //return (userName == "123" && password == "123");
        }

        //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));
            }
        });

    }
时间: 2024-10-10 13:13:05

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

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

ASP.NET Web API的模型验证与ASP.NET MVC一样,都使用System.ComponentModel.DataAnnotations. 具体来说,比如有:[Required(ErrorMessage="")][Range(0, 999)][Bind(Exclude="")][DisplayName("")][StringLength(1024)]... 验证扩展可以看这里:http://dataannotationsextens

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

英语原文地址:http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api 本文是作者所理解和翻译的内容. 这篇文章包括两部分:身份验证和授权. 身份验证用来确定一个用户的身份.例如,Alice用她的用户名和密码登陆系统,服务器用她的用户名和密码来确定她的身份. 授权是判断一个用户是否允许执行某一操作.例如,Alice有获取资源的许可,但不能创建资源. 身份验证 We

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

1. Startup.Auth.cs文件 添加属性 1 public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; } 添加静态构造函数 1 2 3 4 5 6 7 /// <summary> /// 构造函数 /// </summary> static Startup() {     OAuthBearerOptions = new OAuthBearerAuthent

Asp.Net Web Api 身份验证之Form验证

1.原理是使用ActionFilterAttribute对请求进行拦截,对Cookies进行解密.登录则对用户信息进行加密保存在Cookies中. 自定义身份验证特性 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class FormAuthAttribute : ActionFilterAttribute { pu

ASP.NET Web API 数据验证

第一种方式单独为每一个Action做验证 // POST api/values public HttpResponseMessage Post([FromBody]UserInfo userInfo) { if (string.IsNullOrWhiteSpace(userInfo.Gender)) { ModelState.AddModelError("Gender", "性别不能为空"); } if (ModelState.IsValid) { // Do so

ASP.NET Web API 安全筛选器

原文:https://msdn.microsoft.com/zh-cn/magazine/dn781361.aspx 身份验证和授权是应用程序安全的基础.身份验证通过验证提供的凭据来确定用户身份,而授权则决定是否允许用户执行请求的操作.安全的 Web API 身份验证基于确定的身份请求和授权用户请求的资源访问. 您可以在 ASP.NET Web API 中使用 ASP.NET Web API 管道中提供的扩展点,以及使用由主机提供的选项来实现身份验证.对于 ASP.NET Web API 的第一

ASP.NET Web API接受AngualrJS的QueryString的两种方式

ASP.NET Web API如何接受来自AngualrJS的QueryString呢?本篇体验两种方式. 第一种方式:http://localhost:49705/api/products?search=GDN 这种方式是QueryString原生的格式. 首先,把当前的域名和端口号放到一个自定义的module中去. 1 (function () { 2 "use strict"; 3 4 angular.module("custommodule", ["

(转)【ASP.NET Web API】Authentication with OWIN

概述 本文说明了如何使用 OWIN 来实现 ASP.NET Web API 的验证功能,以及在客户端与服务器的交互过程中,避免重复提交用户名和密码的机制. 客户端可以分为两类: JavaScript:可以理解为网页 Native:包括手机 app.windows 客户端等等 步骤 通过用户名和密码,获取 access token,请参考:http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owi

ASP.NET Web API 2基于令牌的身份验证

基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB API使用这样的方法不是很适合,于是就有了基于令牌的认证,使用令牌认证有几个好处:可扩展性.松散耦合.移动终端调用比较简单等等,别人都用上了,你还有理由不用吗? 下面我们花个20分钟的时间来实现一个简单的WEB API token认证: Step 1: 新建一个空的WEB API项目,项目名称就设置为