【发布时间】:2016-04-12 00:38:00
【问题描述】:
我有一个使用 Web API 2 (VB.Net) 构建的 API,在 IIS 7.5 上运行,它依赖于 Windows 身份验证并由 AngularJS 应用程序查询。一年左右一切都运行良好,但我们现在有一个用户,我们在几天前更改了他们的用户名,因为他们最近结婚了。
所有正常的 Windows 登录过程都使用新用户名,但 API 尝试使用的凭据始终引用旧用户名。
AngularJS:
$http.get($rootScope.urlAPI + 'access/', {
cache: false,
withCredentials: true
}).success
...
Web API 2:
<HttpGet>
<Route("api/access")>
<ResponseType(GetType(UserAccessDTO))>
<NoCachePolicy>
<Authorize> _
Function GetStaffAccessForApp() As UserAccessDTO
Dim objUser As System.Security.Principal.WindowsPrincipal = RequestContext.Principal
Dim strUsername As String = objUser.Identity.Name
' strUsername is somehow returning their old username
...
strUsername 以某种方式返回了他们的旧用户名
从浏览器直接查询 API 会返回与旧用户名相同的 JSON 结果,所以我不认为问题出在 AngularJS 应用程序上,而是在浏览器和 API 之间...
IE11 和谷歌浏览器都会出现这个问题,我尝试清除浏览器缓存、删除 cookie,并尝试在 IIS 中重新启动 API 的网站服务以重新加载 API。
我们只有 2 个域控制器,而且已经有几天了,所以它们肯定是同步的,我已经滚动浏览了她帐户的属性,但在那里找不到她的旧用户名的引用,所以我很茫然这是从哪里来的:(
【问题讨论】:
标签: angularjs vb.net asp.net-web-api2 windows-authentication