在ASP.NET应用中集成Windows域帐户来进行权限控制
管理的用户帐号,那实际上我就把口令写到了配置文件里面,这样不好。
因为我使用了安全连接,每次用户登录应用的时候,系统自动匹配当前用户登录所使用的域用户名,去链接SQL数据库,这样,实际上你需要给每一个域用户分配访问SQL的权限,这样既麻烦,而且也不是我们想要的。按一般的开发模式,都是采用一个代理帐号去统一链接数据库的。那怎么打开这个代理呢? <identity impersonate="true" userName="UserName" password="PassWord" /> 增加这么一句就打开了代理,实际上每次客户连接应用,都是通过这个指定的代理用户去访问数据库的。到此为止也可以了。但是,这样,即使是在连接数据库字符串里采用了安全连接,可是最后还是把用户口令写道了配置文件里面!这可不是我想要的!接着实验, <identity impersonate="true" /> 把用户名口令从这句里面去掉,但是在哪里去指定这个代理用户呢? 再次修改IIS指定代理用户 建立一个新的应用程序池,右键选择属性,identity用户表示里面,把匿名用户去掉,在下面选择代理用户。 这样每次,应用就会使用你所指定的代理用户去链接数据库。 这样,你既使用了安全连接,有没有把任何用户的口令写在配置文件里面。 当然,这还不算真的完成程序了。例如,如果你需要在应用中显示当前用户身份,而且需要根据用户身份去判断,谁有权限去修改相关记录怎么办? 在代码中调用域用户权限 增加 Using Page.User.Identity 这个引用,在代码重用如下代码来访问域用户身份。 Page.User.Identity.Name Page.User.Identity.IsAuthenticated 下面的我还没研究,不过难点应该都在上面了 :) 如有错误,欢迎批评指正。 更新:刚才试验了一下,好像IIS对于应用池的代理用户实际上是有特殊规定的,好像向我那样随便的制定一个用户不行。所以我把代理用户身份改回了 Network Service,然后把指定用户加入到Network Service组里,就像安装其他的MS服务程序(SharePoint之类的)一样的配置,这样好像可以了。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |