通过ASP.Net页面获取域用户名,当前登陆的用户 .

[c-sharp]view plaincopyprint?

  1. string domainAndName = Page.User.Identity.Name;
  2. string[] infoes = domainAndName.Split(new char[1] { '//' }, StringSplitOptions.RemoveEmptyEntries);
  3. string userDomainName = "";
  4. string userName = "";
  5. if (infoes.Length > 1)
  6. {
  7. userDomainName = infoes[0];
  8. userName = infoes[1];
  9. }

需要注意的地方(可能出现问题的地方已经解决方案):

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的环境中使用。