【发布时间】:2014-05-28 18:11:16
【问题描述】:
我有一个成功使用身份验证和授权的 MVC 站点。我正在尝试使用 jquery 和 load 方法查询网站的 api 部分。我试图然后使用
User.Identity.GetUserId()
这失败了,因为请求没有经过身份验证。带有ajax请求的页面已成功登录。是否可以访问其身份验证令牌并将其与加载请求一起传递,还是我需要在javascript中生成一个新令牌?
编辑:经过更多研究,我发现 WebApiConfig 文件中的这一行:
config.SuppressDefaultHostAuthentication();
是什么禁用了 ajax 请求的 cookie 验证。它使得只评估令牌方法。默认情况下,MVC 使用 cookie,而 web api 使用令牌。我试图使用两种不同的身份验证方案。由于 cookie 是与 ajax 请求一起自动发送的,因此 User.Identity 会被填充。这回答了我最初的问题。
但是,这被认为是不安全的,并且允许 CRSF 攻击。因此,令牌是可取的。
所以,改写一下,您可以使用现有的身份验证 cookie 和 /token 端点来生成身份验证令牌吗?
【问题讨论】:
标签: javascript jquery asp.net ajax asp.net-web-api