预期效果
- 如果使用域用户登录操作系统,然后访问网站,无须登录,直接进入网站。
- 如果使用非域用户登录操作系统,然后访问网站,弹出登录页面。
解决方案
ASP.NET项目
使用三个页面来模拟这个过程:Default.aspx、Index.aspx、Login.aspx
Default.aspx.cs中的代码:
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { string fullName = Page.User.Identity.Name; string[] domain = fullName.Split('\\'); if (domain.Length>1 && domain[0] == "SJZX") { Session["name"] = domain[1]; // 验证成功 Response.Redirect("Index.aspx"); } else { // 验证失败,跳转到LOGIN.aspx页面进行验证 Response.Redirect("Login.aspx"); } } }
IIS设置
- 应用程序池托管管道模式改为经典,启用32位应用程序设为True。
- 将网站的身份验证方式改为Windows身份验证,其他方式全部禁用。
IE设置
- Internet选项->安全->自定义级别->用户验证->登录->自动使用当前用户名和密码登录。
注意事项
- 身份验证必须使用Windows身份验证,否则获取用户结果为空。
- IE设置为使用当前用户名密码自动登录,否则每次访问会弹出身份验证登录框。