我在我的.NET MVC4項目中使用SimpleMembership。在開發過程中,在手動操作/重建數據庫的同時,我遇到了一個在生產中不太可能出現的錯誤,但是我想解決這個問題,而且我找不到一個優雅的方式來處理它。.NET MVC4 SimpleMembership錯誤 - 「沒有找到用戶發現的名稱爲XXX」
如果登錄到應用程序後,您的用戶名被在數據庫中更改,或者您的用戶記錄完全刪除,用戶將不再能夠訪問應用程序的任何網頁...包括公共頁面,允許匿名視圖和登錄屏幕。相反,會拋出異常 - 「找不到找到名爲'username'的用戶」。
在我的申請的所有網頁顯示這使得一個登錄/註銷控制的局部視圖。無論數據庫中有什麼,Request.IsAuthenticated都會返回true。看起來應用程序認爲用戶仍然基於cookie中的信息登錄,但在數據庫中找不到相應的記錄。清除身份驗證cookie解決了這個問題,但這不是我想要提供給可能遇到此問題的用戶的指示。
我目前的解決辦法是捕捉在Global.asax,清除Cookies是例外,並重定向到登錄頁面。這對我來說似乎完全不好。
有沒有人有一個更好的解決方案,此方案?我從來沒有遇到類似這樣的使用舊.NET成員提供者的問題......我的期望是,這種情況應該立即被覆蓋,我不應該考慮它......如果記錄被改變/在數據庫中刪除,用戶應該只是失敗授權,並被自動重定向到登錄頁面。
嗯,我想它還是會在生產中發生,我的意思是它可能不會發生,因爲在生產環境中我不會手動刪除數據庫中的記錄。這不是切換主機的問題。我沒有花更多的時間來弄清楚如何克服這個問題,但它基本上與我的瀏覽器中的一個身份驗證cookie有關,該身份驗證cookie引用了數據庫中不再存在的用戶......我只希望這個被處理更加優雅的開箱。 – Gadget27