C# 基于站点/URL的ASP.NET MVC角色授权

C# 基于站点/URL的ASP.NET MVC角色授权,c#,asp.net,.net,asp.net-mvc,iis,C#,Asp.net,.net,Asp.net Mvc,Iis,我正在创建一个web应用程序,并将其部署到不同的站点(例如,red.domain.com、blue.domain.com等)。我希望不同的角色可以访问不同的站点(例如,“红色”角色可以访问red.domain.com) 目前我正在使用控制器范围的身份验证(例如,[Authorize(Roles=“red”)])。当我将应用程序部署到站点时,我必须更改每个控制器上的角色(例如,从“红色”更改为“蓝色”),这似乎很荒谬 有人对我如何简化这个有什么想法吗?也许我可以在IIS站点上创建一个自动应用正确角

我正在创建一个web应用程序,并将其部署到不同的站点(例如,red.domain.com、blue.domain.com等)。我希望不同的角色可以访问不同的站点(例如,“红色”角色可以访问red.domain.com)

目前我正在使用控制器范围的身份验证(例如,[Authorize(Roles=“red”)])。当我将应用程序部署到站点时,我必须更改每个控制器上的角色(例如,从“红色”更改为“蓝色”),这似乎很荒谬

有人对我如何简化这个有什么想法吗?也许我可以在IIS站点上创建一个自动应用正确角色的设置


非常感谢。

可能是依赖注入的好地方。类库允许您在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>();

//当你需要控制器的时候
IColourFull控制器=
GetInstance();

两个站点都可以使用相同的代码来获取控制器,但是web.config会显示控制器是蓝色还是红色。

可能是注入依赖项的好地方。类库允许您在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>();

//当你需要控制器的时候
IColourFull控制器=
GetInstance();

两个站点都可以使用相同的代码获取控制器,但web.config会显示它是蓝色还是红色。

这些不同的部署是否共享同一个数据库?如果您只使用相同的角色名呢?哈-对不起。相同的数据库用于身份验证。(数据的数据库不同。)但使用单独的身份验证数据库可能最简单。非常感谢。当然可以。这些不同的部署共享同一个数据库吗?那么,如果您只使用相同的角色名呢?哈-我很抱歉。相同的数据库用于身份验证。(数据的数据库不同。)但使用单独的身份验证数据库可能最简单。非常感谢。绝对是一个选择。