2016-01-20 66 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