在ASP.NET应用中集成Windows域帐户来进行权限控制2010-11-05企业应用程序采用域用户来代替独立的用户管理模块的好处很多。程序本身不需要单独编写用户帐号管理模块与域用户集成,用户不需要单独记忆用户名口令,可以实现无缝登录采用与用户方案安全性提升到域用户安全级别其他好处多多首先需要配置IIS:为你的应用单独建立一个web虚拟目录,右键选择属性里的目录安全,权限与访问控制,把“打开匿名访问”不选,仅仅选择“集成Windows权限认证”,别的都不要选,确定。集成域用户来控制用户访问的途经有两种,一种是利用NTFS权限控制表,缺点是每次转移应用之后,需要逐个设置目录访问权限。另外一种是通过配置web.config文件,通过URL来控制,好处是直接修改配置文件就可以了,不需要每次发布应用时变换一次目录就修改一次。下面我就主要介绍一个后者。划应用目录树:根目录的权限设置覆盖子目录的设置,把管理页面单独放在一个路径下,举例如下:
oot
ootadmin
ootsales
ootuser修改配置文件:在需要进行权限配置的目录下面,分别建立web.config文件。root下面肯定需要一个配置文件了,在本例中由于admin路径下放置了管理页面,因此我在admin下面也建立了一个web.config配置文件。root下的web.config配置文件的和权限相关的内容如下:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="APPConnectionString" connectionString="Data Source=MachineName;Initial Catalog=DatabaseName;Integrated Security=SSPI"
</connectionStrings>
<system.web>
<authentication mode="Windows" />
<!--<identity impersonate="true" userName="UserName" password="PassWord" />-->
<identity impersonate="true"/>
<authorization>
<allow roles="UserName,domainnameusername1,domainnameusername2,domainnameusergroup1" />
<deny users="*"/>
</authorization>
</system.web>
</configuration>
admin目录下也增加一个web.config文件
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="domainnameusername1,domainnameusergroup1" />
<deny users="*"/>
</authorization>
</system.web>
</configuration>