我问a similar question答案是我根本不需要这样做。虽然这对于这种方法是正确的,但这对我没有帮助。
我有以下行动:
[MyCaching]
[MyUserAuth]
public class MyMagicController:Controller {
public ActionResult GetLoans() {
return GetLoansForThisUser();
}
}
MyUserAuth
是一个属性,用于检查用户是否具有获取数据的权限。此信息从数据库中检索,无法通过HttpContext(纯粹)检索。一些用户是管理员应该看到更多。
如果用户具有正常访问权限(如90%的用户),[MyCaching]
- 属性中的缓存机制应该开始,内容应该从缓存中返回。
如果是管理员,则不应返回缓存而不填写缓存,因为内容不同。
所以我需要找到一种方法让[MyUserAuth]
告诉[MyCaching]
这些信息。有没有直接的方法来实现这一目标?
如果没有,我可以“滥用”HttpContext
吗? E.g:
public class MyAuthAttribute:AuthenticationAttribute
// ...
public void CheckPermissions(HttpContext context) {
context.Items.Add("isAdmin",true);
}
}
public class MyCachingAttribute:ActionAttribute {
// ...
public void GetCache(HttpContext context) {
if (context.Items["isAdmin"]) {
return // dontcache;
}
}
}
然后将MyUserAuth
放在MyCaching
之前?
答案 0 :(得分:0)
您可以在身份验证上设置角色或声明'isAdmin',您可以通过HttpContext在MyCaching中查看