2017-04-13 352 views
3

我正在使用最新的.NET Core(1.1)和EF Core來構建我的ASP.NET網站,並且我還使用ASP.NET身份,並且我已經發布我的網站到Azure主機,一切都按預期工作(包括我的Windows本地主機)。但是現在我正在使用Apache切換到我自己的Linux(Centos 7)專用服務器,並且我的網站正在運行,但是當嘗試重置密碼或確認電子郵件時,我收到「無效令牌」消息。ASP.NET核心身份 - 無效令牌(Linux)

我已經檢查過這樣的其他問題,解決方法是編碼/解碼通過電子郵件發送的url,但是我已經這樣做了,但它仍然無法正常工作。

我也嘗試將整個數據庫從本地主機複製到我的服務器,以防Linux主機上發生遷移,但這也無濟於事。所有遷移都已應用,其他不使用Identity上下文的東西也可以使用。

經過額外搜索後,我發現它可能是主機上不同機器密鑰的問題,並且安全印記不同步,但我不明白這會如何影響我,因爲我部署了一個全新的版本我的應用程序到服務器,並在本地主機上的一切工作以及Azure託管。此外,這曾經是ASP.NET MVC的問題,而不是核心。

我怎樣才能調試這個問題?我還沒有看到任何人在新的EF Core上出現這個問題,尤其是在Linux主機上。 link在默認

回答

0

DOTNET核心MVC應用程序保存在cookie加密您的身份驗證令牌:

我使用作爲指導官方.NET核心網站上的最新VS 17.我已經設置了Apache代理部署站點。

該數據加密/解密的種子/密鑰是基於您的機器密鑰的,這在每臺機器上都是不同的。

如果您運行了應用程序的多個實例(負載均衡),則當系統嘗試解密在另一臺計算機上創建的會話cookie時,將發生此消息/錯誤。

另一方面,如果您的瀏覽器中仍有Cookie信息,並且您開始在不同主機上託管網站,則此新主機將無法解密這些已存在的會話Cookie。

我知道這一點,因爲我有同樣的問題。你可以在這裏找到會話的源代碼:https://github.com/aspnet/Session/tree/dev/src/Microsoft.AspNetCore.Session

我試過這個時,dotnet核心還沒有發佈,我最終使用this blog。但現在可能已經過時了。

我建議您建議您使用外部會話存儲,而不是將cookie用作數據存儲。閱讀他們的文檔,瞭解如何設置:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state