Safari浏览器中的User.Identity.Name为空

问题描述:

早上好。我们目前在asp.net 4.5.1上有一个MVC 5应用程序,我们打算用在移动浏览器上。Safari浏览器中的User.Identity.Name为空

我们正在使用一些Ajax调用来填充视图上的一些下拉菜单,但是由于这些API调用正在使用登录用户,服务器拒绝来自Safari的呼叫。 这在iphone safari中很明显,但不是在iphone chrome上。 控制器侧面看上去像这样

[HttpGet] 
[Route("API/Account/Dependents/{idPlusType}")] 
public IHttpActionResult GetUserOrDependantInfo(string idPlusType) 
{ 
    ... 
    string loggedOnUser = User.Identity.Name; 
} 

正是这部分是什么赶回来的String.Empty

我的客户端是一个简单的Ajax到不用彷徨

$.ajax({ 
    url: path, 
    dataType: "json", 
    type: "GET", 
    contentType: 'application/json; charset=utf-8', 
    success: function (d) { 
    -- Rest 
    } 
} 

现在提琴手显示非常相似的要求。一个来自chrome的服务正确。来自safari的那个不是。来自相同iphone一个iphone

Cookie:.ASPXAUTH=0530DF01D09167C311032C3A6A258D24C20A9189FC8ACE76239016815047D4FEB5FCDDAED04E7FBCA41763388B1C655987732203CFD77D4B76C1EC3200ACCC26F61151BA77F4B6C3745C20D1D70369677814BB2A;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhB0=Vb_TYkr-Begl4fv4JulkokhM24VFZjXjt_gHdsmz3ckfkKbBJu8YmNJcghafJ8_0Edn0Lb9SopXA7Di4fKZm6uV1AOM1;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhBVGVzdA2=_sxROjMA7jW8PbluEKtzEOAbdJfpBDpYRWJLhwR6SDlX10UA7m7FU-6xezerP73HyqeLqrmqdYfwQfLftIhwqr5Fs0w1; ASP.NET_SessionId=dbh0kje3unlap545zeuvld31 

现在铬Safari的

提琴手请求。

Cookie:ASP.NET_SessionId=qgbcybtzvw2sxaa3w1yphu1z;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhBVGVzdA2=v7ZBYrFtmg1GuuETKlIubWKr7T4Rddt1I40f9i56LzmQDI1svaw6qpk4hpuZqm_12ltrEkak9GewyhXU1rX0gQCiMvg1;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhB0=NkM3pLoBJeYd2MTMKXwrh7dFY7uQYLGbzVN9nPy-ai7oNdmPXoxbI8Z6Xc0SGkVS3IxY-gmTTzD6m_eu2tKNjOA46jU1;.ASPXAUTH=2CBEC21CF8A3EDD3A4C6870FF4D68F16536C4CA9D87634CA4EB817589140EC85B8967C8A2F4ACAD8CF52FAAD5E4488F2210C6B75CCF55412CFA6F6ADD66323DB5072CD3622092865B214AE3626EE7A4F6BD8494B 
+0

你正在使用什么样的认证? Cookie身份验证或令牌? – grimurd 2015-02-09 23:17:28

+0

我没有确切的答案,但Safari浏览器因Cookie问题而臭名昭着,所以我会开始寻找。 – ChrisV 2015-02-10 05:51:51

+0

我们正在使用基于cookie的身份验证。不是基于令牌的。 – 2015-02-10 18:56:32

我们最终从.ajax切换到.getJson函数,并帮助解决了这个问题。 我们不确定为什么,但之后服务器端开始看到用户认证。