gpt4 book ai didi

c# - MVC Controller 访问

转载 作者:行者123 更新时间:2023-11-30 16:24:59 25 4
gpt4 key购买 nike

我们的应用程序正在从 WebForms 迁移到 MVC。我们有不同的方式来处理授权。查询数据库 View 以验证用户授权。此 View 根据每个用户返回所有菜单层次结构。例如,如果 User1 试图访问名为 SecretList.aspx 的页面,则通过菜单层次结构(在授权后保存在 HTTP session 中)应用搜索以检查访问权限。如果该用户存在与 SecretList.aspx 相关的菜单项,则授予访问权限。

我的问题是,如何在 ASP.NET MVC 3 中实现这种方法?

我不想为每个 Controller 操作添加属性,我已经阅读过有关路由约束自定义 Controller 的信息。

要路由约束,我可以访问 HTTP session 并检索我的菜单层次结构以进行授权查询吗?

对于自定义 Controller ,我应该考虑重载哪个方法?在 Controller 执行完整的 Action 代码之前,我可以检查授权并重定向到另一个 View 吗?

还有什么更好的主意吗?

最佳答案

我会使用全局添加到所有操作的自定义操作过滤器,它的工作方式与内置的授权属性非常相似。 Action 过滤器在路由已解析并创建 Controller 后运行(因此传递给 Controller ​​的任何内容都必须可由任何用户构造)然后它可以检查用户是否可以执行 Action 或者是否应该返回另一个 ActionResult。

我强烈建议查看 MVC 源代码(或使用像 ILSpy 这样的工具)来查看授权属性的代码。

您可以使用自定义路由约束,但这实际上意味着用户不存在该路由,而不是不允许他们访问。

关于c# - MVC Controller 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10308501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com