我在我的ASP.net MVC3应用程序中使用了windows身份验证。我的系统中有几个不同的角色:
Administrator
PowerUser
GeneralUser我们有一条规则,即AD组名称在每个环境中都不同。
例如,在开发中,角色名称将是:
Administrator_Dev
PowerUser_Dev
GeneralUser_Dev在生产中,它只会是:
Administrator
PowerUser
GeneralUser当我需要部署到不同的环境时,有没有一个好的解决方案可以在不更改代码的情况下在这些不同的环境中使用授权?
发布于 2011-11-19 02:04:05
难道你不能实现所有的角色吗?除非Administrator_Dev角色有机会成为生产站点……
[Authorize(Roles = "Administrator_Dev, Administrator")]发布于 2011-11-18 23:02:04
我能想到的唯一解决方案是条件编译。
使用条件编译在文件中定义这些常量。
#if DEV
public const string AdministratorGroupName = "Administrator_Dev";
#else
public const string AdministratorGroupName = "Administrator";
#endif这是使用需要在编译时定义的自定义属性的声明性授权的问题之一。
另一种选择是使用另一个自定义属性,并自己实现操作过滤器。
发布于 2012-09-14 18:58:50
我只需在web.config中创建特定于应用程序的配置部分,将特定于环境的AD组的名称放入应用程序配置部分,然后使用Authorize属性上的configuration属性。然后,我可以通过对每个环境使用自定义web.config来更改组名。对于大多数应用程序,您无论如何都需要能够为每个环境提供不同的连接字符串。这样,您就可以使用内置的Authorize属性。
https://stackoverflow.com/questions/8184388
复制相似问题