我有一个ASP.Net MVC5应用程序,它已经运行了几个月。然而,我今天发现了一些奇怪的事情。
如果我登录到这个应用程序,在没有任何操作的情况下将一个页面放置一个小时,然后使用JQuery向服务器发送ajax请求,那么在服务器端,System.Web.HttpContext.Current.Request.IsAuthenticated
就是false
。
但是,如果我发送一个"get"请求而不是ajax请求(例如,只需按F5刷新此页面),则IsAuthenticated
就是true
。我已经检查了.AspNet.ApplicationCookie
cookie是否正确发送到服务器。
为什么Request.IsAuthenticated
在接收ajax请求时为false?
您必须在ajax调用中包含一个带有承载令牌的Authorization
标头。请以这个响应为例,不要忘记令牌之前的字符串'Bearer '
。我希望它能有所帮助。
谢谢大家!
我发现我误解了Get请求。事实上,Get请求也已过期。由于我有SSO服务器,浏览器只重定向到SSO站点并重定向回。因为我认为Get requst没有过期。我在应用程序中设置了ExpireTimeSpan=TimeSpan.FromHours(8)。使用CookieAuthentication,然后解决了此问题。