我们的应用程序正在从 WebForms 迁移到 MVC。我们有不同的方式来处理授权。查询数据库视图以验证用户授权。此视图根据每个用户返回所有菜单层次结构。例如,如果 User1 试图访问名为 SecretList.aspx 的页面,则通过菜单层次结构(在 auth 后保存在 HTTP Session 中)应用搜索以检查访问权限。如果该用户存在与 SecretList.aspx 相关的菜单项,则授予访问权限。
我的问题是,如何在 ASP.NET MVC 3 中实现这种方法?
我不想为每个控制器操作放置属性,并且我已经阅读了有关Route Constraints和Custom Controller的信息。
要路由约束,我可以访问 HTTP 会话并检索我的菜单层次结构以进行授权查询吗?
对于自定义控制器,我应该考虑重载哪种方法?在控制器执行完整的操作代码之前,我可以检查授权并重定向到另一个视图吗?
还有其他更好的主意吗?