我们在以下设置中有几个asp.net MVC应用程序
SecurityApp(根应用程序 - 处理SSO的表单身份验证并具有配置文件编辑页面)
Application1(虚拟目录)
Application2(虚拟目录)
Application3(虚拟目录)
因此domain.com指向SecurityApp和domain.com/Application1等指向其关联的虚拟目录。我们所有的单点登录(SSO)都可以使用表单身份验证正常工作。
根据用户登录菜单列出其可用应用程序的权限,并生成注销链接并将其保存在缓存中 - 只要用户在SecurityApp中(编辑他们的个人资料),此菜单就会显示正常但我们无法弄清楚如何获取虚拟目录中的应用程序以显示相同的应用程序菜单。
我们尝试过:
1)使用JSONP执行将返回菜单的html的请求。 ajax调用返回带有html的HTML;但是,由于User.IsAuthenticated为false,菜单将返回空白。
2)我们创建了一个用户控件,并将其与SecurityApp项目的dll一起包含在内,这是有效的;但是,我们不希望在我们创建的每个应用程序中包含SecurityApp项目的所有dll(以及web.config中的所有应用程序设置)
我们希望这样做尽可能简单,以便创建新应用的任何人都可以在尽可能少的步骤中将菜单添加到他们的应用程序中...任何想法?
要澄清 - 我们正在使用ASP.NET MVC 1.0,因为这些应用程序正在生产中,我们没有机会去ASP.NET MVC 2.0(不幸的是)
答案 0 :(得分:0)
您是否考虑过使用单一项目区?
区域允许您将应用程序划分为离散的功能区域。它有助于管理大型应用程序,使其更易于管理,并允许创建可以放入整个应用程序的不同小程序。
有一个适用于MVC 1.0的区域版本:http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx