有關JForum忘記密碼的功能是正常的
剛測試了一下,它的運作流程大致如下
1.點選登入
2.點選忘記密碼
3.輸入原來註冊時所用的電子郵件信箱或會員名稱任何一個,然後按下確定。
4.JForum系統發送一封電子郵件至您當初註冊的電子郵件信箱,然後顯示一個完成畫面,請您點選某個連結回到登入頁面
=>最初註冊時填寫的電子郵件信箱必須正確否則您永遠收不到信
5.進入到您的電子郵件信箱,您會看到一封主旨為補發密碼通知的信件,裡面有一個URL,類似下方這樣:
http://www.andowson.com/user/recoverPassword/b5b466d022a4be46b9f4530cb7a212ce.page
6.將上面的網址複製並貼到原來瀏覽器視窗的網址列,然後按下Enter
7.再輸入一次您的原來註冊時填的電子郵件信箱及新的密碼兩次,按下確定
8.JForum確認無誤後,更改您的密碼,然後顯示一個完成頁面,請您點選某個連結回到登入頁面
=>上面通知信內的URL連結只能使用一次,如果日後您又忘記了,請重複一次上述流程
9.點選登入連結後,輸入帳號跟密碼,按下登入,然後...
出現404錯誤,找不到網頁?
原因是這個登入畫面裡面有個隱藏欄位returnPath,紀錄呼叫這個登入畫面的來源網址,以便在進行完帳號密碼驗證後導回去剛剛的地方。檢視畫面原始碼可以發現,這時變成如下:
<input type="hidden" name="returnPath" value="http://www.andowson.com/jforum.page" />
而原本JForum的設計, *.page 通通是交給 jforum 這個Controller Servlet來處理,但是如果沒有傳任何參數給它,就會變成moduleClass == null的條件成立,而預設是回傳404錯誤碼。我稍微改了一下JForum.java的service()方法,讓它導回根目錄:
if (moduleClass == null) {
// Module not found, send 404 not found response
//response.sendError(HttpServletResponse.SC_NOT_FOUND);
response.sendRedirect("/");
}
如此一來,就OK了。