1

這是我的問題。我的應用有登錄頁面,密碼重置頁面和個人資料頁面。沒有身份驗證,密碼重置頁面和個人檔案頁面無法訪問防止取消MVC 3 Web應用程序中的密碼更改過程

我使用[Authorize]進行配置文件操作和密碼重置操作。

在我的應用程序中,我在30天后過期用戶密碼。所以,當用戶登錄,如果密碼過期,我重定向用戶更改密碼頁面。由於用戶已經通過身份驗證,用戶可以前往Profile頁面輸入網址(例如:www.mywebsite.com/Profile/View)。這是一個漏洞。

我不希望用戶取消密碼更改過程。我想強制用戶更改密碼。

我該如何做到這一點?

回答

1

在你的用戶/密碼錶中有另一個布爾標誌列來指示用戶在過期後是否重置了密碼。因此,每次當您過期密碼時,將該記錄的此列值設置爲false,並且當用戶根據您的過程確實更改其密碼時,請將該值設置爲true。現在,您可以在用戶嘗試訪問View操作方法(或任何其他操作方法/控制器)時檢查此列值。您可以將此檢查作爲自定義操作篩選器進行編寫,並根據需要將其應用於操作方法/控制器。

您也可以使用PasswordLastUpdated datetime列代替上面提到的布爾標誌。在這種情況下,您需要檢查該值(PasswordLastUpdated)是否在針對到期過程記錄的日期時間之前或之後。(DateExpired列值)

創建自定義操作篩選器的示例可用here

+0

是的,我已經有了這兩列。我可以在每個視圖中檢查這種情況。但我認爲這不是一個好習慣。如何編寫自定義操作屬性? – 2013-02-10 11:39:57

+1

@ yohan.jayarathna:不要在你的Views中寫這種代碼。正如我所提到的,你必須編寫一個動作屬性並將其應用到你的動作方法/控制器上(這樣所有的動作方法都會進行檢查) – Shyju 2013-02-10 11:47:13

相關問題