相关疑难解决方法(0)

ActionFilterAttribute - 适用于特定控制器类型的操作

我正在使用ActionFilterAttribute来执行自定义身份验证逻辑.该属性仅用于包含我的身份验证逻辑的派生Controller类.

这是我的控制器,源自我的自定义控制器类,以及一个示例属性:

public class MyController : CustomControllerBase
{

   [CustomAuthorize(UserType = UserTypes.Admin)]
   public ActionResult DoSomethingSecure()
   {
      return View();
   }

}
Run Code Online (Sandbox Code Playgroud)

这是我的ActionFilterAttribute的一个例子:

public class CustomAuthorizeAttribute : ActionFilterAttribute
{
   public MyUserTypes UserType { get; set; }

   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
      myUser user = ((CustomControllerBase)filterContext.Controller).User;

      if(!user.isAuthenticated)
      {
         filterContext.RequestContext.HttpContext.Response.StatusCode = 401;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

效果很好.

这是一个问题:是否可以要求此属性仅用于我的自定义控制器类型中的操作?

c# model-view-controller asp.net-mvc

13
推荐指数
2
解决办法
3万
查看次数

授权和ASP.NET MVC缓存

我对ASP.NET MVC缓存和授权感到困惑,并且急需一些澄清.

我的自制授权属性继承自AuthorizeAttribute.它的重写AuthorizeCore方法每次都会运行,即使我[OutputCache]在控制器操作上设置了一个属性.我明白那一部分.

现在,对我来说这个问题:现在当我实际执行输出缓存并且从缓存中提供页面时,每次AuthorizeCore都会失败.原因是当缓存请求时,httpContext.Session提供的AuthorizeCorenull!?这是一些简化的代码:

protected override bool AuthorizeCore(HttpContextBase httpContext) {
    return (Session["userId"] != null)
}
Run Code Online (Sandbox Code Playgroud)

所以如果httpContext.Sessionnull,这显然每次都失败了.我需要访问会话,我还能如何检查请求是否被授权?这没有任何意义 - 如果这是它应该如何,那么我永远不能在ASP.NET MVC中使用缓存页面和身份验证.救命?

c# asp.net-mvc session authorize asp.net-caching

6
推荐指数
1
解决办法
6020
查看次数

如何阻止MVC缓存调用动作方法的结果?

我遇到了IE缓存操作方法结果的问题.

我发现的其他文章与安全性和[授权]属性有关.这个问题与安全性无关.

这是一个非常简单的"记录投票,抢平均值,返回平均值和投票数"的方法.关于它的唯一有趣的事情是它通过Ajax调用并返回一个Json对象.我相信它是被缓存的Json对象.

当我从FireFox运行它并使用Firebug观察XHR流量时,一切都运行良好.但是,在IE 8下,"throbber"图形没有时间显示,显示使用jQuery注入页面的"新"平均值和计数的页面元素永远不会有所不同.

我需要一种方法告诉M​​VC永远不要缓存这个动作方法.

本文似乎解决了这个问题,但是我无法理解它: 防止在ASP.NET MVC中缓存属性,每次执行一个Action时都强制执行属性

我需要更多的上下文来解决方案,以了解如何扩展AuthorizationAttribute.请解决您的答案,就好像您正在与对MVC缺乏深入了解的人交谈,即使这意味着回复了一篇关于某些必要基础/先决条件的文章.

谢谢,

特雷卡罗尔

caching asp.net-mvc-2

6
推荐指数
1
解决办法
6245
查看次数