UserID と User Role に応じて true または false を返す関数があります。
いくつかのアクション結果を持つコントローラーがあります。
例えば
public class DemoController : Controller
{
public ActionResult Index(){}
public ActionResult Contact(){}
}
したがって、ユーザーがこのアクションを使用するたびに、ユーザーが役割を果たしているかどうかを確認したいと思います。
私はそれを好きにすることができることを知っています
[Authorize(Roles = "Administrator")]
public ActionResult JustAdmins(){}
しかし、このような方法では、ユーザーがこのアクションにアクセスするたびに、余分な SQL クエリが発生します。
ユーザーロールをMemCachedに保存したいので、関数は次のようになります
public static bool IsCompany(Guid UserID)
{
//if (get from cache != null && get from cache == "Role")
// return true
//if (get from DB != null && get from DB == "Role")
//return true
return false;
}
しかし、この関数をチェックするためにコントローラーのすべてのアクションを継承するにはどうすればよいですか?
ヒント: OnActionExecuting などをオーバーライドする可能性がありますか?