【发布时间】:2012-04-25 02:15:39
【问题描述】:
我们的应用程序正在从 WebForms 迁移到 MVC。我们有不同的方式来处理授权。查询数据库视图以验证用户授权。此视图根据每个用户返回所有菜单层次结构。例如,如果 User1 试图访问名为 SecretList.aspx 的页面,则会通过菜单层次结构(在 auth 后保存在 HTTP Session 中)应用搜索以检查访问权限。如果该用户存在与 SecretList.aspx 相关的菜单项,则授予访问权限。
我的问题是,如何在 ASP.NET MVC 3 中实现这种方法?
我不想为每个控制器操作添加属性,我已经阅读了 Route Constraints 和 Custom Controller。
要路由约束,我可以访问 HTTP 会话并检索我的菜单层次结构以进行授权查询吗?
对于自定义控制器,我应该考虑重载哪种方法?在 Controller 执行完整的 Action 代码之前,我可以检查授权并重定向到另一个视图吗?
还有什么更好的主意吗?
【问题讨论】:
-
你可以使用标准的角色提供者还是自定义它? stackoverflow.com/questions/376655/…
-
我无权访问我的代码中的角色数据。所有角色和用户关系都在数据库视图中。
-
SQL Membership 提供程序中也是如此。
-
为了授予权限,我查询了一个视图。例如,select * from vw_UserMenuFunctionality where user = ID。通过这个视图,我们创建了我们的 Object 并在 Login 后将其放入 HTTP Session 中。该对象是用户可以访问的菜单层次结构。如果要访问的页面存在于 Object.MenuList 中,则授予访问权限。所有这些都是为了不允许通过地址直接访问。
标签: c# asp.net-mvc asp.net-mvc-3