我想识别每次请求进入webAPI中的控制器之前被击中的一个点。我需要在那时进行自定义身份验证。我已经在做一个customAuthorization但是我想在一些自定义身份验证中调整它甚至在它到达控制器之前。
application_Start方法只触发一次,因此我不太确定每次我们在浏览器中输入URL并按Enter键时控件的位置是什么。
答案 0 :(得分:4)
Gloabal.asax
有更多方法,可以重载,其中一个是Application_BeginRequest
here's更详细的生命周期。控制器工厂也可以帮助您拦截和发送请求。
protected void Application_BeginRequest(object sender, EventArgs e) //Not triggered with PUT
{
//your code
}
答案 1 :(得分:1)
您可以选择{API}的OnActionExecuting
。每次进入的请求都会触发此操作。
执行管道:
控制器构造函数> ActionFilter的
OnActionExecuted
>控制器动作> ActionFilter的ActionFilterAttribute
简单public class YourFilterName : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
// pre-processing
//Your authentication logic goes here - use actionContext
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
var objectContent = actionExecutedContext.Response.Content as ObjectContent;
if (objectContent != null)
{
var type = objectContent.ObjectType; //type of the returned object
var value = objectContent.Value; //holding the returned value
}
Debug.WriteLine("OnActionExecuted Response " + actionExecutedContext.Response.StatusCode.ToString());
}
}
实施:
website/
apps/
app1/
forms.py
models.py
tasks.py
urls.py
views.py
app2/
forms.py
models.py
tasks.py
urls.py
views.py
__init__.py
settings/
base.py <- contains base settings
celery.py
local.py <- contains dev/prod settings, imports all settings from base.py
__init__.py
urls.py
wsgi.py