- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要掌握当前HttpContextBase
在 ASP.NET WEB API 中 AuthorizeAttribute
.
我如何从 HttpActionContext
获得该信息覆盖的 IsAuthorized() 中的参数?
protected override bool IsAuthorized(HttpActionContext actionContext)
{
// need to call code that requires the current Controllers HttpContextBase
}
最佳答案
所以我最终使用了这个答案中描述的 HttpContextFactory 方法:
https://stackoverflow.com/a/9624433/3584
public class HttpContextFactory
{
private static HttpContextBase m_context;
public static HttpContextBase Current
{
get
{
if (m_context != null)
return m_context;
if (HttpContext.Current == null)
throw new InvalidOperationException("HttpContext not available");
return new HttpContextWrapper(HttpContext.Current);
}
}
public static void SetCurrentContext(HttpContextBase context)
{
m_context = context;
}
}
HttpContextFactory.Current...
HttpContextFactory.SetCurrentContext(GetMockedHttpContext());
private HttpContextBase GetMockedHttpContext()
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
var session = new Mock<HttpSessionStateBase>();
var server = new Mock<HttpServerUtilityBase>();
var user = new Mock<IPrincipal>();
var identity = new Mock<IIdentity>();
var urlHelper = new Mock<UrlHelper>();
var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
var requestContext = new Mock<RequestContext>();
requestContext.Setup(x => x.HttpContext).Returns(context.Object);
context.Setup(ctx => ctx.Request).Returns(request.Object);
context.Setup(ctx => ctx.Response).Returns(response.Object);
context.Setup(ctx => ctx.Session).Returns(session.Object);
context.Setup(ctx => ctx.Server).Returns(server.Object);
context.Setup(ctx => ctx.User).Returns(user.Object);
user.Setup(ctx => ctx.Identity).Returns(identity.Object);
identity.Setup(id => id.IsAuthenticated).Returns(true);
identity.Setup(id => id.Name).Returns("test");
request.Setup(req => req.Url).Returns(new Uri("http://www.google.com"));
request.Setup(req => req.RequestContext).Returns(requestContext.Object);
requestContext.Setup(x => x.RouteData).Returns(new RouteData());
request.SetupGet(req => req.Headers).Returns(new NameValueCollection());
return context.Object;
}
关于asp.net-web-api - 如何在 AuthorizeAttribute 中获取当前的 HttpContextBase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568065/
使用以下代码(使用 Moq 4.0.10501.6): HomeController controller = new HomeController(); ActionResult result =
我有一个 ASP.NET 应用程序,它需要为 View 设置多个布局。有一个正常的 Web 布局,以及一个没有依赖项的自包含页面的“静态”布局(用作文档管理系统中的显示模板)。 让 View 切换其布
我想模拟 HttpContext 的 User 属性。我正在使用 Scott Hanselman 的 MVCHelper 类和 RhinoMocks。 我有一个包含代码的单元测试,如下所示: ...
public string GetCartId(HttpContextBase context) { if (context.Session[CartSessionKey] == null)
我最近开始使用 TDD 和依赖注入(inject)。这是一个很大的心态变化,我仍在努力将所有部分拼凑在一起。 我有一个用于所有业务逻辑的服务层,以使 Controller 尽可能薄。我的服务中的某些服
我正在尝试创建自己的自定义 HTTP 上下文: CustomHttpContext : HttpContextBase { public override HttpRequestBase Re
代码 using System.Web; abstract class CookieHandler { public CookieHandler(string domain) {
我正在开发一个 ASP.NET MVC 应用程序,并试图针对 Controller 操作编写一些单元测试,其中一些操作操作 HttpContext 上的属性,例如 Session、Request.Co
我遇到了一个非常奇怪的错误,我只在一些相当广泛的谷歌搜索中发现了几次。我正在创建一个授权属性以添加到我在类库中的 ASP.NET MVC 项目中的操作中。我通过 NuGet 安装了 ASP 包,并且可
我有一个单元测试装置,我试图在 ASP.NET MVC Controller 上测试 ControllerAction,该 Controller 用于 Web 应用程序上的成员函数。我正在尝试模拟 H
我需要掌握当前HttpContextBase在 ASP.NET WEB API 中 AuthorizeAttribute . 我如何从 HttpActionContext 获得该信息覆盖的 IsAut
我正在努力实现自定义的 AuthorizeAttribute。 AuthorizeCore 覆盖接受 HttpContextBase。如果用户没有正确的角色,那么我想抛出一个错误。我找到了一些代码,我
两者都有 Request 和 Response 属性,但我无法编写一个采用 HttpContext 或 HttpContextBase 的方法。在某些地方,一个或另一个都可用,所以我需要同时处理这两个
我正在开发一个 C# ASP.NET MVC 应用程序,它使用 Windows 模式身份验证在 Intranet 上运行,具有以下 Web.config 部分文件:
我目前正在尝试使用 Microsoft Fakes Framework 编写一些单元测试。对于特定的单元测试,我必须模拟 Controller.User 属性。所以我为 System.Web 添加了一
我试图在一个静态类上构建一个静态属性,该属性基本上会返回一个 cookie 值,以在我的 MVC 站点(MVC 3,如果重要的话)中使用。像这样的东西: public static class Sha
我基于以下示例实现了一个 session 助手来保存和检索 session 变量:(我尽量减少 session 变量的使用) Stackoverflow question 我在 Visual Stud
这是一个运行 .Net 3.5 的 Asp.net 应用程序(不是 MVC) 我这样做了: protected void Application_Start(object sender, Event
我需要从我的 Controller 之一的构造函数中访问 OwinContext,如下所示: protected SEMController() { var currentUserIsAdmi
我在 NinjectWebCommon.RegisterServices 方法中创建了 HttpContextBase 的绑定(bind),但是当我尝试在 Controller 或服务中引用它时,我收
我是一名优秀的程序员,十分优秀!