我正在创建一个单独的Web应用程序,我将部署到不同的站点(例如,red.domain.com,blue.domain.com等)。我希望不同的角色可以访问不同的站点(例如,“红色”角色可以访问red.domain.com)。
目前我正在使用控制器范围的身份验证(例如,[Authorize(Roles =“red”)])。当我将我的应用程序部署到站点时,我必须更改每个控制器上的角色(例如从“红色”改为“蓝色”),这看起来很荒谬。
任何人对如何简化这一点都有任何想法?也许我可以在IIS站点上创建一个自动应用正确角色的设置?
非常感谢。
答案 0 :(得分:1)
可能是依赖注入的好地方。像StructureMap这样的库允许你在web.config中定义类型映射(我假设每个站点都有一个web.config)
因此,如果你有RedController
和BlueController
,那么它们都实现了一个公共接口IColourfulController
,它看起来像这样:
<!-- red web.config-->
<DefaultInstance
PluginType="IColourfulController, [assembly name]"
PluggedType="RedController, [assembly name]" />
<!-- blue web.config-->
<DefaultInstance
PluginType="IColourfulController, [assembly name]"
PluggedType="BlueController, [assembly name]" />
// when you need the controller
IColourfulController controller =
ObjectFactory.GetInstance<IColourfulController>();
两个站点都可以使用相同的代码来获取控制器,但web.config表示它是蓝色还是红色。