我有关于MVC Anti伪造令牌的问题。 这样当我做我的身份验证我有伪代码:验证防伪的问题
var user = userRepository.GetByEmail(email);
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;
这样做我能得到当前用户在我这样的代码:
var user = HttpContext.Current.User as EntityUser;
这工作正常,直到我将[ValidateAntiForgeryToken]属性添加到操作。 当我添加我得到的属性
所需的防伪标记未提供或无效。
如果我注释掉这一行:
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;
的防伪验证工作正常,但我没有让我的“EntityUser”从HttpContext的我的便捷方式。 有关如何解决此问题的任何想法? 致以问候 Mikael
我不认为这些是相关的,这会使您的观察看起来很奇怪。我在应用程序中使用自定义校长和AFT,并且工作正常。 – Will 2010-05-14 15:22:55
但是,如果我注释掉设置CurrentPrincipal和Current.user的行,Antiforgery验证将起作用。 你使用MVC2吗? (Iforgot提到我使用MVC2)。据我了解,MS已经改变了AntiForgeryToken的实施。 在这里看到一个关于它的SO问题:http://stackoverflow.com/questions/2697772/mvc-2-antiforgerytoken-why-symmetric-encryption-iprinciple – 2010-05-15 20:35:07