Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在单个ASP.NETMVCWeb应用程序中构建访问者和管理员功能?_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 如何在单个ASP.NETMVCWeb应用程序中构建访问者和管理员功能?

C# 如何在单个ASP.NETMVCWeb应用程序中构建访问者和管理员功能?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,因此,我一直在为我的一群朋友开发一个小型web应用程序(网站),并逐渐意识到事情需要改变。应用程序有两个方面 面向公众的一方,向访问者和非管理员提供动态数据,以及 管理员可以更新或创建要服务的动态数据的管理端 该应用程序最初是一个单独的webforms项目,由单独的页面和文件夹的web.config安全性分隔开。然后它发展成了独立的项目(MVC管理端和webforms前端)。后来,由于部署问题,我不得不将它带到今天的位置,一个混合了MVC(管理)和webforms(公共)的单一web应用程序 现

因此,我一直在为我的一群朋友开发一个小型web应用程序(网站),并逐渐意识到事情需要改变。应用程序有两个方面

  • 面向公众的一方,向访问者和非管理员提供动态数据,以及
  • 管理员可以更新或创建要服务的动态数据的管理端
  • 该应用程序最初是一个单独的webforms项目,由单独的页面和文件夹的web.config安全性分隔开。然后它发展成了独立的项目(MVC管理端和webforms前端)。后来,由于部署问题,我不得不将它带到今天的位置,一个混合了MVC(管理)和webforms(公共)的单一web应用程序

    现在我正在考虑将其迁移到单个MVC项目。我想通过URL like/Admin让我的管理功能远离我面向公众的一面,但我不知道如何做到这一点。我已经阅读了很多关于将控制器分组为模块的主题,但我不确定这是否正确

    • 我是否应该创建与公共应用程序其余部分内联的管理函数,并确定用户是否登录
    • 或者我应该创建独立于公共控制器的管理控制器(EventAdminController vs CalendarController)
    • 其他人做了什么
    欢迎您的建议,谢谢


    是的,我正在使用微软的ASP.NETMVC框架。Darryl,你是说要将我的视图放在管理文件夹中,并使用web.config(检查安全性和角色)保护它,还是要将我的控制器放在管理文件夹中

    我的假设是,你说把控制器放在一个管理文件夹中,比如控制器下。这仍然意味着/Controllers中的HomeController与/Controllers/Admin中的HomeAdminController不同。在这种情况下,您可以为每个配置特定的路由,但我看不出简单地将控制器放在不同的文件夹中如何保护它们(除非在操作上使用Authorize属性)


    至于将视图放在不同的文件夹中,我可以看到理论上是如何工作的。但是控制器(理论上没有任何authorize属性)在返回视图之前是否仍会执行?然后,我会期望重定向或错误。无论哪种方式,如果您无法访问视图,我都不希望执行控制器操作,也不希望执行任何内部操作预检查。

    在我正在处理的MVC项目中,我将所有管理内容都放在管理文件夹中。要查看管理员文件夹,您必须经过身份验证并具有正确的角色。我的控制器往往非常小,大多数逻辑都在控制器使用的业务层中

    我们有一个类似的问题,我们正在创建一个非常大的ASP.NET MVC应用程序,并将功能划分为我们使用的流程非常类似的区域。通过创建区域,您可以为每个区域而不是整个应用程序使用唯一的控制器名称,您可以更轻松地分离模块,并且可以共享身份验证和基本的通用功能。

    我不确定这将如何与控制器一起工作。他们不分国界。我在web窗体世界中使用过这种方法,效果很好。我可以更好地组织我的控制器,但我必须在项目中的所有控制器上使用唯一的名称。您使用的是Microsoft提供的ASP.NET MVC框架还是ASP.NET的其他MVC框架?在ASP.NET MVC框架中,默认情况下,控制器与视图紧密关联。因此url将调用AdminControler.Something(1)您还可以使用过滤器、区域、带有身份验证约束的路由或带有身份验证逻辑的IOC容器来执行此类功能