我正在使用ASP.NET MVC 4开发内部网应用程序。我正在使用自定义表单身份验证。当用户访问应用程序时,我想获取用户的Windows登录用户名并在我的数据库中检查该用户名。但我不知道如何使用该用户名。我尝试使用以下代码:
string CurLoggedInUsername = Environment.UserName;
当我从Visual Studio运行时,这给了我用户名,但是当我在IIS上托管我的应用程序时,它给出了一个奇怪的值。我也尝试过使用
string CurLoggedInUsername = httpcontext.current.user.identity.name;
但没用。有没有办法在认证之前获取用户的Windows登录用户名?
答案 0 :(得分:0)
听起来您可能需要考虑混合模式身份验证。即Windows和Forms身份验证。问题是他们不一定能很好地一起玩。
以下文章介绍了该问题以及如何克服它。本文的主旨围绕401挑战(Windows身份验证)和302重定向(表单身份验证)在>中的不兼容性。 IIS 7集成模式和一种使用两种形式和HTTP管道拦截的方式来获取用户详细信息。我成功地将这种方法用于大型公共部门客户端(尽管是用于webforms应用程序)。我确信原则是一样的。
IIS 7.0 Two-Level Authentication with Forms Authentication and Windows Authentication
我忘了在代码示例中添加查找Windows身份验证凭据的正确位置。已经有一段时间了,所以我无法记住这一点。