我正在开发我的第一个ASP.NET Web API项目,并且我有一个自定义授权属性.我想要做的是设置属性,以便如果请求是本地的(即调试),则绕过授权检查.
在所有其他ASP.NET MVC版本中,我可以检查Request.IsLocal(甚至是Request.UserHostAddress)以查看请求是否来自本地计算机,但System.Web.Http.AuthorizeAttribute只公开HttpRequestMessage对象,这显然是没有这些信息,似乎也从Request对象中遗漏了一些其他东西.
与Web API一起使用的全新(显然有限)类的处理是什么,也许更直接地说,如何在Authorize属性中获取被调用者的主机地址?
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var context = actionContext.Request.Properties["MS_HttpContext"] as System.Web.HttpContextBase;
bool isLocal = context.Request.IsLocal;
Run Code Online (Sandbox Code Playgroud)
如果这真的只是用于debuging那么使用这样的条件语句可能更安全围绕任何调试代码 - 特别是在安全上下文中...
#if DEBUG
//
#endif
Run Code Online (Sandbox Code Playgroud)
至于为什么...我想这至少部分是为了允许更容易的单元测试和模拟,HTTP Context是一个ASP.NET System.Web构造...... WebApi被设计为能够作为自托管代码运行独立于ASP.NET.
| 归档时间: |
|
| 查看次数: |
2948 次 |
| 最近记录: |