練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術

關於JForum忘記密碼流程的說明及小修改 RSS feed
討論區首頁 » JForum中文社群 JForum Chinese Users Community
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
有關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了。

分享經驗 累積智慧
[WWW]
fly

九級學員

註冊時間: 2008/12/7
文章: 11
離線
谢谢你写得这么详细。

我每次进行完第7步后可以看到图片1,
然后进行第9步,得到图片2

我试验过很多次,我的操作应该没有问题
  • [Thumb - 2.jpg]
 檔案名稱 2.jpg [Disk] 下載
 描述 沒有檔案註解存在
 檔案大小 8 Kbytes
 下載次數:  7 次

  • [Thumb - 1.jpg]
 檔案名稱 1.jpg [Disk] 下載
 描述 沒有檔案註解存在
 檔案大小 9 Kbytes
 下載次數:  8 次

fly

九級學員

註冊時間: 2008/12/7
文章: 11
離線
smilie
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
您的問題應該是因為帳號尚未啟用,所以無法通過登入驗證程序,主要是因為在net.jforum.sso.DefaultLoginAuthenticator這個類別的validateLogin方法裡面對於登入成功的條件是
if (user != null && !user.isDeleted() && (user.getActivationKey() == null || user.isActive())) {

return user;
}

所以雖然透過忘記密碼功能可以成功修改密碼,但是如果您一直沒有去啟用帳號,則仍然無法登入成功。

分享經驗 累積智慧
[WWW]
fly

九級學員

註冊時間: 2008/12/7
文章: 11
離線
andowson wrote:您的問題應該是因為帳號尚未啟用,所以無法通過登入驗證程序,主要是因為在net.jforum.sso.DefaultLoginAuthenticator這個類別的validateLogin方法裡面對於登入成功的條件是
if (user != null && !user.isDeleted() && (user.getActivationKey() == null || user.isActive())) {

return user;
}

所以雖然透過忘記密碼功能可以成功修改密碼,但是如果您一直沒有去啟用帳號,則仍然無法登入成功。


谢谢提醒,我启用账号的时候需要验证码,“现在”我怎样得到验证码呢?
  • [Thumb - 未命名.jpg]
 檔案名稱 未命名.jpg [Disk] 下載
 描述 沒有檔案註解存在
 檔案大小 11 Kbytes
 下載次數:  7 次

andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
首先,JForum的手動啟用帳號中輸入的是會員ID(整數),不是會員名稱(字串),您的會員ID可以由會員列表前面第一行數字查得(即#那一行)。
第二,驗證碼在當初加入會員時,已發送通知信到您註冊時所使用的電子郵件信箱,如果當初您註冊用的信箱是正確的,您可以到您的信箱中再找找看有沒有那封信。
第三,如果當初註冊時沒收到啟用帳號通知信,目前這個版本的JForum也沒有提供補發驗證碼的功能,如果您比較偏好使用fly這個帳號,有幾種作法:
a.由系統管理者手動啟用帳號,這樣子您會有兩個帳號
b.由系統管理者變更您目前通過認證的這個帳號名稱為fly,將原來的fly改為別的名稱
c.開發補發驗證碼的程式,可以模仿忘記密碼的程式來改,然後您再去申請補發驗證碼,然後再來啟用帳號。目前想到的邏輯如下:
1.在手動啟用帳號的頁面上加入補發驗證碼連結,使用者按下後顯示申請表單畫面
2.使用者同時輸入帳號跟新的電子郵件信箱地址
3.系統檢查該帳號是否已啟用
3.1.如果尚未啟用,則更新該帳號的電子郵件信箱,同時產生新驗證碼,寄送至這個新的電子郵件信箱
3.2如果已啟用,則顯示帳號已啟用畫面(避免帳號被盜用)
4.使用者至其新的電子郵件信箱收信,收到信後再啟用帳號

這幾個作法的優缺點如下:
a方案:優點:簡單,目前系統所提供的功能。缺點:無法確認使用者所填寫之電子郵件信箱是否正確,失去驗證碼機制所要的目的。然後同一個人變成有兩個帳號。
b方案:優點:可以保留目前您這個帳號所發表的文章紀錄。缺點:就是要請系統管理者去處理這件事,還有原先的文章可能會看起來怪怪的。
c方案:優點:可以讓使用者自行處理這件事情。不需要系統管理者介入。也可以回收一些帳號。缺點:就是還要開發程式,需要考量所花的時間成本以及日後與新版本程式相容性的問題。還有就是同一個人還是有兩個帳號。

目前,我比較傾向使用b方案。不知道您是否同意這樣的處理方式?
  • [Thumb - user_id.jpg]
 檔案名稱 user_id.jpg [Disk] 下載
 描述 會員ID
 檔案大小 18 Kbytes
 下載次數:  7 次


分享經驗 累積智慧
[WWW]
fly

九級學員

註冊時間: 2008/12/7
文章: 11
離線
andowson wrote:首先,JForum的手動啟用帳號中輸入的是會員ID(整數),不是會員名稱(字串),您的會員ID可以由會員列表前面第一行數字查得(即#那一行)。
第二,驗證碼在當初加入會員時,已發送通知信到您註冊時所使用的電子郵件信箱,如果當初您註冊用的信箱是正確的,您可以到您的信箱中再找找看有沒有那封信。
第三,如果當初註冊時沒收到啟用帳號通知信,目前這個版本的JForum也沒有提供補發驗證碼的功能,如果您比較偏好使用fly這個帳號,有幾種作法:
a.由系統管理者手動啟用帳號,這樣子您會有兩個帳號
b.由系統管理者變更您目前通過認證的這個帳號名稱為fly,將原來的fly改為別的名稱
c.開發補發驗證碼的程式,可以模仿忘記密碼的程式來改,然後您再去申請補發驗證碼,然後再來啟用帳號。目前想到的邏輯如下:
1.在手動啟用帳號的頁面上加入補發驗證碼連結,使用者按下後顯示申請表單畫面
2.使用者同時輸入帳號跟新的電子郵件信箱地址
3.系統檢查該帳號是否已啟用
3.1.如果尚未啟用,則更新該帳號的電子郵件信箱,同時產生新驗證碼,寄送至這個新的電子郵件信箱
3.2如果已啟用,則顯示帳號已啟用畫面(避免帳號被盜用)
4.使用者至其新的電子郵件信箱收信,收到信後再啟用帳號

這幾個作法的優缺點如下:
a方案:優點:簡單,目前系統所提供的功能。缺點:無法確認使用者所填寫之電子郵件信箱是否正確,失去驗證碼機制所要的目的。然後同一個人變成有兩個帳號。
b方案:優點:可以保留目前您這個帳號所發表的文章紀錄。缺點:就是要請系統管理者去處理這件事,還有原先的文章可能會看起來怪怪的。
c方案:優點:可以讓使用者自行處理這件事情。不需要系統管理者介入。也可以回收一些帳號。缺點:就是還要開發程式,需要考量所花的時間成本以及日後與新版本程式相容性的問題。還有就是同一個人還是有兩個帳號。

目前,我比較傾向使用b方案。不知道您是否同意這樣的處理方式?


不好意思,最近由于身体原因没来上网。
我非常赞成使用b方案,这个dream1000的账号我不想要了,你给我改成fly吧,非常感谢你的热情
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
已修改為fly。也希望再見到您發表新文章。

分享經驗 累積智慧
[WWW]
fly

九級學員

註冊時間: 2008/12/7
文章: 11
離線
andowson wrote:已修改為fly。也希望再見到您發表新文章。


谢谢 smilie
 
討論區首頁 » JForum中文社群 JForum Chinese Users Community
前往:   
行動版