从托管在Azure的Web角色我们的开发/测试环境中大量的调试后,即突然停止使用Chrome 34的工作,我们认识到Chrome的忽略与域名".cloudapp.net"的Cookie设置Cookie响应( Azure中云服务的默认公共Microsoft域).我们选择此名称的原因是能够在不同的云服务之间生成CORS请求,这些请求需要来自同一javascript应用程序的安全请求.这意味着获得从MVC网站的验证cookie一样http://example.cloudapp.net和像调用另一个Web角色安全的WebAPI REST服务http://exampleServices.cloudapp.net(仅适用于具有相同的域名饼干)
以下是生成身份验证cookie的云服务的身份验证响应示例:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin:http://example.cloudapp.net
Cache-Control:private
Content-Length:31
Content-Type:application/json; charset=utf-8
Date:Fri, 11 Apr 2014 20:21:20 GMT
Server:Microsoft-IIS/8.0
Set-Cookie:.COOKIENAME=XXXXXXXXXXXXXXXXXXXX; domain=.cloudapp.net; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)
我们面临的问题是,使用此域名在Chrome34中放弃了Cookie,因此任何其他请求都未经过身份验证.我们可以购买公共域并在azure中设置我们的云服务,但我想知道是否有任何解决此问题的方法.
我可以使用以下方法获取经过身份验证的用户的用户名(电子邮件格式):
var autenticateduser = HttpContext.User.Identity.Name;
使用QuickWatch窗口我可以使用以下表达式查找给定名称和姓氏.是否有更简洁的方法来获取此信息?
(new System.Linq.SystemCore_EnumerableDebugView<System.Security.Claims.Claim>(((System.Security.Claims.ClaimsIdentity)(HttpContext.User.Identity)).Claims)).Items[5]
所以在运行此代码之后
'use strict';
var myNewArray = Array(...[,,]);
console.log(myNewArray);
Run Code Online (Sandbox Code Playgroud)
我明白了
[undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我为什么我只得到2未定义?