相交其他CodeIgniter的類庫,tank_auth,配置簡單,使用也簡單,並且作者也一直在更新,現在是1.0.9。1.0.8已經支援CI2.0了,我現在一般的項目都是用它,所以推薦給大家。
安裝Tankauth的步驟
下載最新版類庫(下載地址:http://www.konyukhov.com/soft/tank_auth/tank_auth.zip)
解壓檔案
將application下相應的檔案複製到你的CIapplication檔案夾下。
將captcha檔案夾複製到你的CI檔案夾(項目目錄,和application同一個目錄)下.並確保該目錄在web伺服器下可寫。
在你的MySQL資料庫裡安裝資料庫(schema.sql檔案)結構。
在你的CI項目下開啟application/config/config.php檔案,並且把$config['sess_use_database']的值改為TRUE.
安裝完成!
如果訪問出現如下錯誤:
AnErrorWasEncountered
InordertousetheSessionclassyouarerequiredtosetanencryptionkeyinyourconfigfile.
這個錯誤提示需要一個密鑰。那麼開啟config.php,在$config['encryption_key']後面,隨便加一個密鑰即可。
TankAuth官網地址:http://www.konyukhov.com/soft/tank_auth/
如果出現了錯誤,不要忘記看設定檔(tank_auth.php和email.php),安裝完成後類庫應該可以完美工作了,但是根據你的伺服器的條件和你的需要,最好有選擇性的修改一下。
提示:預設情況下,類庫產生強大的系統特定的密碼哈系值是不可移植的,這就是說一旦建立,使用者資料庫就不能匯出並匯入到其他資料庫中,這個特性也可以通過設定檔修改。
Tankauth類庫的簡單說明
類庫運用了MVC模型,這也就是說所有的資料庫相關的方法都封裝在了模型(model)檔案中,並且類庫本身作也為了這些方法的介面。控制器(auth)處相關請求,並調用類庫中的方法,渲染相應的視圖(view)(顯示在瀏覽器中或以email方式發送)。控制器包含如下的方法:
login:使用者登入網站。如果登入成功,並且使用者賬戶是啟用的,使用者將被重新導向到首頁。如果未被啟用,send_again將被調用(看下面)。如果登入失敗,使用者將繼續留在相同頁面(登入頁面);
logout:登出使用者。
register:註冊使用者到網站。如果註冊成功,將建立一個使用者賬戶。如果在設定檔中的email_activation項的值被設定為TRUE,則使用者需要通過點擊發送到email中的特殊串連啟用賬戶;否則預設啟用。請注意:註冊完後使用者並沒有通過登入驗證,仍然需要登入。
send_again:再次發送啟用email到相同或者新的email地址。當為啟用使用者登入是,每次調用這個方法。當使用者由於信箱的問題或者錯誤的emial地址未收到信件時,這個功能是非常有用的。使用者可以改變他們的email或者保持不變。
activate:啟用使用者賬戶。通常這個方法是通過點擊email中的連結調用啟用的。可以通過點擊”forgotpassword”,輸入email來啟用賬戶。使用者是通過在URL中的使用者的Id和驗證碼來認證的。
forgot_password:產生特殊的重設碼(為了修改密碼)並發送給使用者。很顯然使用者在忘記密碼的時候才會用到該方法。
reset_password:用一個新的(使用者佈建的)密碼替換舊的(忘記的)密碼。這個方法可以通過點擊郵件中的串連調用。使用者是通過在URL中的使用者的Id和驗證碼來認證的。
change_password:“正常的”密碼修改(相比於重設密碼)。只能在使用者登入並且啟用的時候才可調用。為了保證安全,仍然需要驗證使用者秘密。
change_email:修改使用者的email。只能在使用者登入並且啟用的時候才可調用。為了保證安全,仍然需要驗證使用者秘密。這個新的email只有通過點擊發到這個email中的連結才能被啟用。
reset_email:啟用新email地址並用一個新的email地址替換。可以通點擊郵件中的連結調用該方法。使用者是通過在URL中的使用者的Id和驗證碼來認證的。
unregister:刪除使用者賬戶。只能在使用者登入並且啟用的時候才可調用。為了保證安全,仍然需要驗證使用者秘密。
既然auth控制器系統管理使用者的所以方法(包括登入和登出),所以你未必一定要直接調用類庫中的方法。但是下面這些是一定要調用的:
is_logged_in:檢測使用者是否登入網站。
get_user_id:如果使用者登入,獲得使用者Id,否則返回FALSE。
get_username:獲得驗證使用者的使用者名稱,否則返回FALSE。如果該使用者名稱沒有註冊,調用這個方法是無意義的(這時候任何使用者都將返回一個空的字串)。