- string domainAndName = Page.User.Identity.Name;
- string[] infoes = domainAndName.Split(new char[1] { '//' }, StringSplitOptions.RemoveEmptyEntries);
- string userDomainName = "";
- string userName = "";
- if (infoes.Length > 1)
- {
- userDomainName = infoes[0];
- userName = infoes[1];
- }
需要注意的地方(可能出现问题的地方已经解决方案):
1.将IIS Authentication设置为:Windows Authentication,并且只有这一项
2.在ASP.Net的Web.Config中添加:<identity impersonate="true"/> <authentication mode="Windows"/>
3.发布到IIS后,将Application Pool选择为Classic的
4.将IIS的 ISAPI and CGI Restrictions设置为Allowed
要让IE打开一个Windows身份认证的网站不提示登录对话框,必须满足以下条件:
1. 必须在 IIS 的 Web 站点属性中启用 Windows 集成身份验证。
2. 客户端和Web服务器都必须在基于Microsoft Windows的同一个域内。
3. Internet Explorer 必须把所请求的 URL 视为 Intranet(本地)。
4. Internet Explorer 的 Intranet 区域的安全性设置必须设为“只在 Intranet 区域自动登录”。
5. 请求Web页的用户必须具有访问该Web页以及该Web页中引用的所有对象的适当的文件系统(NTFS)权限。
6. 用户必须用域帐号登录到Windows 。
在这几个条件中,如果网站是在一个Windows域中运行,除了第3条可能不满足外,其它条件应该都容易满足(第4条是默认值)。 因此,要让IE不提示输入登录帐号,只要确保第3条满足就可以了。
另外,除了在IE中设置Intranet外,还可以在访问网站时,用计算机名代替IP地址或者域名, 那么IE始终认为是在访问Intranet内的网站,此时也不会弹出登录对话框。
1. IE在集成Windows身份认证时,虽然不提示登录对话框,但是不表示不安全,它会自动传递登录凭据。
2. 这种行为只有IE才能支持。(其它的浏览器只是会记住密码,在实现上其实是不一样的。)
3. 集成Windows身份认证,也只适合在Intranet的环境中使用。