首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows在具有ASP.net身份验证的多个环境中使用AuthorizeAttribute

Windows在具有ASP.net身份验证的多个环境中使用AuthorizeAttribute
EN

Stack Overflow用户
提问于 2011-11-18 22:57:41
回答 3查看 1.3K关注 0票数 2

我在我的ASP.net MVC3应用程序中使用了windows身份验证。我的系统中有几个不同的角色:

代码语言:javascript
运行
复制
Administrator
PowerUser
GeneralUser

我们有一条规则,即AD组名称在每个环境中都不同。

例如,在开发中,角色名称将是:

代码语言:javascript
运行
复制
Administrator_Dev
PowerUser_Dev
GeneralUser_Dev

在生产中,它只会是:

代码语言:javascript
运行
复制
Administrator
PowerUser
GeneralUser

当我需要部署到不同的环境时,有没有一个好的解决方案可以在不更改代码的情况下在这些不同的环境中使用授权?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-19 02:04:05

难道你不能实现所有的角色吗?除非Administrator_Dev角色有机会成为生产站点……

代码语言:javascript
运行
复制
[Authorize(Roles = "Administrator_Dev, Administrator")]
票数 1
EN

Stack Overflow用户

发布于 2011-11-18 23:02:04

我能想到的唯一解决方案是条件编译。

使用条件编译在文件中定义这些常量。

代码语言:javascript
运行
复制
#if DEV
public const string AdministratorGroupName = "Administrator_Dev";
#else
public const string AdministratorGroupName = "Administrator";
#endif

这是使用需要在编译时定义的自定义属性的声明性授权的问题之一。

另一种选择是使用另一个自定义属性,并自己实现操作过滤器。

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 18:58:50

我只需在web.config中创建特定于应用程序的配置部分,将特定于环境的AD组的名称放入应用程序配置部分,然后使用Authorize属性上的configuration属性。然后,我可以通过对每个环境使用自定义web.config来更改组名。对于大多数应用程序,您无论如何都需要能够为每个环境提供不同的连接字符串。这样,您就可以使用内置的Authorize属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8184388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档