WebApi2官网学习记录--- Authentication与Authorization
Authentication(认证)
WebAPI中的认证既可以使用HttpModel也可以使用HTTP message handler,具体使用哪个可以参考一下依据:
- 一个HttpModel可以检测ASP.NET请求管道中的所有请求,一个message handler仅仅可以检测到被路由到这个WebAPI的请求
- 可以预先设置message handlers,让特定的route使用指定的authentication scheme
- Http Module只能在IIS中使用,Message hans可以在任意ost-agnostic环境中使用(web-hosting和self-hosting)
- HTTP Module在IIS中参与登陆、审计等过程
- HTTP Module在管道事件初期就执行了,如果使用的是message handler,principal直到handler执行时才被赋值
通常。如果不需要运行在self-hosting环境中的话,HTTP model是一个很好的选择,反之,可以考虑message handler。
设置Principal
如果application需要执行自定义的authentication逻辑,需要在两个地方设置principal
- Thread.CurrentPrincipal 用于.NET
- HttpContext.Current.User 用于ASP.NET
private void SetPrincipal(IPrincipal principal)
{
Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
{
HttpContext.Current.User = principal;
}
}
Authorization(授权)
授权在靠近controller时被执行,目的是为了可以有更多机会进行细粒度控制对资源的访问。
- Authorization filters在controller action之前执行,如果没有授权action不会被调用
- 在controller action的内部,可以从ApiController.User中获得当前的principal

使用[Authorize] 特性
Authorize可以应用到Globally、controller、action级别。优先级:action>controller>globally
[Authorize]
public class ValuesController : ApiController
{
[AllowAnonymous]//允许匿名访问
public HttpResponseMessage Get() { ... }
//授权用户才能访问
public HttpResponseMessage Post() { ... }
}
还可以控制action的访问所需的权限
[Authorize(Users="Alice,Bob")]
public class ValuesController : ApiController
{
} // Restrict by role:
[Authorize(Roles="Administrators")]
public class ValuesController : ApiController
{
}
自定义Authorization Filters
自定义authorization过滤器,可以通过继续AuthorizeAttribute或AuthorizationFilterAttribute或IAuthorizationFilter来实现,如果是cpu密集型的身份验证逻辑应使用同步的方式,如果是IO密集型的应使用异步方法。
AuthorizeAttribute的层级关系:

WebApi2官网学习记录--- Authentication与Authorization的更多相关文章
- WebApi2官网学习记录---Cookie
Cookie的几个参数: Domain.Path.Expires.Max-Age 如果Expires与Max-Age都存在,Max-Age优先级高,如果都没有设置cookie会在会话结束后删除cook ...
- WebApi2官网学习记录---批量处理HTTP Message
原文:Batching Handler for ASP.NET Web API 自定义实现HttpMessageHandler public class BatchHandler : HttpMess ...
- WebApi2官网学习记录---Html Form Data
HTML Forms概述 <form action="api/values" method="post"> 默认的method是GET,如果使用GE ...
- WebApi2官网学习记录--HttpClient Message Handlers
在客户端,HttpClient使用message handle处理request.默认的handler是HttpClientHandler,用来发送请求和获取response从服务端.可以在clien ...
- WebApi2官网学习记录--HTTP Message Handlers
Message Handlers是一个接收HTTP Request返回HTTP Response的类,继承自HttpMessageHandler 通常,一些列的message handler被链接到一 ...
- WebApi2官网学习记录---Configuring
Configuration Settings WebAPI中的configuration settings定义在HttpConfiguration中.有一下成员: DependencyResolver ...
- WebApi2官网学习记录---单元测试
如果没有对应的web api模板,首先使用nuget进行安装 例子1: ProductController 是以硬编码的方式使用StoreAppContext类的实例,可以使用依赖注入模式,在外部指定 ...
- WebApi2官网学习记录---Tracing
安装追踪用的包 Install-Package Microsoft.AspNet.WebApi.Tracing Update-Package Microsoft.AspNet.WebApi.WebHo ...
- WebApi2官网学习记录---异常处理
HttpResponseException 当WebAPI的控制器抛出一个未捕获的异常时,默认情况下,大多数异常被转为status code为500的http response即服务端错误. Http ...
随机推荐
- HTML5框架、背景和实体、XHTML的使用规范
HTML5框架 cols :竖排 rows:横排,frameset frame已弃用 iframe仍保留使用.用法: Target属性: HTML5实体 XHTML的使用规范
- $(document).ready(); $().ready(); $()
$(document).ready(function(){}); $().ready(function(){}); $(function(){}), 三者效果是一样的,在文档加载完成之后执行()中的代 ...
- 在MVC中利用uploadify插件实现上传文件的功能
趁着近段的空闲时间,开发任务不是很重,就一直想把以前在仓促时间里所写的多文件上传功能改一下,在网上找了很多例子,觉得uploadify还可以,就想用它来试试.实现自己想要的功能.根据官网的开发文档,同 ...
- 禁止chrome中CORS跨域资源共享错误
在开发中,可以通过命令行命令chrome --allow-file-access-from-files来 禁止CORS错误. 只在紧急情况下使用这个方法,比如你的老板正站在你身后, 并且所有事情都无法 ...
- mysql 查询大量数据内存溢出
使用非buffer 的sql 查询 比如pymysql 的 pymysql.cursor.SSCursion
- uva 10212 - The Last Non-zero Digit.
#include <cstdio> #define ll long long const ll MOD = 1e9; int main() { ll N, M; while(scanf(& ...
- 深入剖析C/C++函数的参数传递机制
2014-07-29 20:16 深入剖析C/C++函数的参数传递机制 C语言的函数入口参数,可以使用值传递和指针传递方式,C++又多了引用(reference)传递方式.引用传递方式在使用上类 ...
- sql_autoload_register() 函数 和__autoload() 的区别
1:__autoload($class) 因为是一个函数,所以只能定义一次,使用多个会冲突报错;而 sql_autoload_register('function') 可定义多个,它有效地创建一个队列 ...
- ie6里png图片不透明
ie6下img图片或背景图片为png时,图片变成了一片黑色: 图中的jquery-timepicker的两个黑方块和img就是由此原因引用的.解决方法:由Drew Diller提供,对img.back ...
- CSS/CSS3长度、时间、频率、角度单位大全
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1494 一.一笔带过的 ...