【发布时间】:2016-04-22 12:52:46
【问题描述】:
我问a similar question,答案是我根本不需要这样做。虽然这对于该方法是正确的,但这对我没有帮助。
我有以下操作:
[MyCaching]
[MyUserAuth]
public class MyMagicController:Controller {
public ActionResult GetLoans() {
return GetLoansForThisUser();
}
}
MyUserAuth 是一个属性,用于检查用户是否有权获取数据。此信息是从数据库中检索的,不能(纯粹)通过 HttpContext 检索。一些用户是管理员,他们应该看到更多。
如果用户具有正常访问权限(如 90% 的用户),[MyCaching] 中的缓存机制应该启动 - 属性应该从缓存返回内容。
如果是Administrator,Cache不应该返回不填充,因为内容不一样。
所以我需要找到一种方法让[MyUserAuth] 告诉[MyCaching] 该信息。有没有直接的方法来实现这一目标?
如果没有,我可以为此“滥用”HttpContext 吗?例如:
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 之前?
【问题讨论】:
-
为什么不能在身份验证时设置角色/声明 isAdmin?然后你可以在 MyCaching 中检查它
标签: c# asp.net asp.net-mvc attributes httpcontext