2016-01-20 32 views
0

我有一些“开箱即用” .NET验证码:净Owin身份验证失败......在一个奇怪的方式

Dim manager = Context.GetOwinContext().GetUserManager(Of ApplicationUserManager)() 
Dim signinManager = Context.GetOwinContext().GetUserManager(Of ApplicationSignInManager)() 
Dim result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout := False) 

    Select Case result 
     Case SignInStatus.Success 
       IdentityHelper.RedirectToReturnUrl(Request.QueryString("ReturnUrl"), Response) 
       Exit Select 

我有本地的,Facebook和谷歌认证所有工作。

现在,非常奇怪的部分。

用户1登录,没问题

用户2个日志中...返回 “SignInStatus.Success”,而是 “HttpContext.Current.User.Identity” 是什么。

但是等待!还有更多!

如果我打开并保存web.config(不作任何更改),用户2现在可以登录! 现在我有2个登录的用户,第三个不一样:无法登录,直到我保存web.config文件(这将重新启动应用程序池)

所以,问题是:跆拳道是怎么回事?

+0

还在这里敲我的头。我的开发机器上发生的情况与服务器上的情况相同。您必须在每个用户登录后或下一个用户失败时重新启动应用程序池 –

+0

另请注意,在以“用户2”身份登录时,如果输入错误密码,则它会失败。如果我注册一个新用户,它也表现出相同的行为...除非我第一次重新启动应用程序池 –

+0

,否则新用户不会登录。这里有两件事:(1)您似乎只是使用Identity认证框架,你可能不需要OWin,除非你在Facebook和Google上引用了OAuth;没有你的其他代码,我无法分辨你需要的Owin在哪里; (2)你是如何注册ApplicationUserManager的,只要你把它注册为singleton? – sowen

回答

0

Visual Studio授权模板在Startup.Auth.cs中设置CookieAuthenticationOptions类的LoginPath属性。这将处理ReturnUrl逻辑并复制IdentityHelper.RedirectToReturnUrl方法中的功能。如果这是你的问题,当你发布到登录页面时,你会在你的IIS日志中看到302个响应。我通过在Login页面中注释对IdentityHelper.RedirectToReturnUrl的调用来解决此问题。

您可以阅读更多关于LoginPath属性及其功能here