【发布时间】:2011-02-19 14:06:32
【问题描述】:
我对 MVC Anti forgery 令牌有疑问。 当我进行身份验证时,我有这样的伪代码:
var user = userRepository.GetByEmail(email);
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;
通过这样做,我可以像这样在我的代码中获取当前用户:
var user = HttpContext.Current.User as EntityUser;
在我将 [ValidateAntiForgeryToken] 属性添加到操作之前,这可以正常工作。 当我添加属性时,我得到 p>
所需的防伪令牌未提供或无效。
如果我注释掉这一行:
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;
防伪验证工作正常,但我没有方便的方法从 HttpContext 获取我的“EntityUser”。 关于如何解决这个问题的任何想法? 最好的祝福 迈克尔
【问题讨论】:
-
我不认为这些是相关的,这让你的观察看起来很奇怪。我在应用程序中使用自定义主体和 AFT,它工作正常。
-
但是如果我注释掉我设置 CurrentPrincipal 和 Current.user 的行,Antiforgery 验证工作。你用的是MVC2吗? (我忘了提到我正在使用 MVC2)。据我了解,MS 已经改变了 AntiForgeryToken 的实现。有关它的 SO 问题,请参见此处:stackoverflow.com/questions/2697772/…
标签: asp.net-mvc authentication asp.net-mvc-2 antiforgerytoken