我问了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”,您可以通过 HttpContext 在 MyCaching 中检查它
关于c# - 在 Controller 中的操作之间交换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794385/