我构建了一个自定义 ASP.Net MVC5 应用程序,该应用程序部署在 DMZ(组织的外围网络)中,通过 ADFS 3.0(Active Directory 联合服务)对用户进行身份验证。该应用程序部署在 IIS 中,启用了匿名身份验证,并且由于它是 DMZ,因此服务器未加入域,我没有可用的 Windows 身份验证。就 ADFS 和身份验证而言,它运行良好,因为当从外部网络访问应用程序时会提示用户输入用户名/密码,并在从网络内部访问时使用 SSO(单点登录)。但是,问题是我有一个静态类,它获取当前用户并根据数据库中的用户表对其进行验证。为了获取当前用户,我使用Thread.CurrentPrincipal.Identity.Name. 最初,它确实返回一个用户名,但在浏览应用程序的不同页面之间,它会翻转并开始返回一个空白字符串。翻转时没有特定的模式。对于相同的用户和会话,突然间我开始得到一个空白字符串,在几次页面刷新后,它开始将用户名返回给我。现在,我不确定这个问题是由于我调用的静态类和方法引起的,Thread.CurrentPrincipal.Identity.Name还是应用程序的配置有问题。我也试过HttpContext.Current.User.Identity.Name,结果是一样的。使用静态类的原因是不要在每个控制器中复制相同的代码。
添加回答
举报
0/150
提交
取消