Codeigniter整合Tank Auth權(quán)限類庫的教程

2013-03-03 12:16:47來源:西部e網(wǎng)作者:

一開始找了很多CodeIgniter的類庫,覺得都不怎么樣,后來干脆自己通過CI的鉤子系統(tǒng)寫了權(quán)限管理。但是還是不怎么滿意,后來有人推薦tank_auth,感覺挺好的,配置簡單,使用也簡單,而且作者也一直在更新,現(xiàn)在是1.0

一開始找了很多CodeIgniter的類庫,覺得都不怎么樣,后來干脆自己通過CI的鉤子系統(tǒng)寫了權(quán)限管理。但是還是不怎么滿意,后來有人推薦tank_auth,感覺挺好的,配置簡單,使用也簡單,而且作者也一直在更新,現(xiàn)在是1.0.9。1.0.8已經(jīng)支持CI 2.0了,我現(xiàn)在一般的項目都是用它,所以推薦給大家。

安裝Tank auth的步驟

  1. 下載最新版類庫(下載地址:http://www.konyukhov.com/soft/tank_auth/tank_auth.zip
  2. 解壓文件
  3. 將 application 下相應(yīng)的文件復(fù)制到你的 CI application 文件夾下。
  4. 將 captcha 文件夾復(fù)制到你的CI 文件夾(項目目錄,和application同一個目錄)下. 并確保該目錄在web服務(wù)器下可寫。
  5. 在你的MySQL數(shù)據(jù)庫里安裝數(shù)據(jù)庫(schema.sql文件)結(jié)構(gòu)。
  6. 在你的CI項目下打開 application/config/config.php 文件,并且把 $config['sess_use_database'] 的值改為 TRUE.
  7. 安裝完成!

如果訪問出現(xiàn)如下錯誤:

An Error Was Encountered

In order to use the Session class you are required to set an encryption key in your config file.

這個錯誤提示需要一個密鑰。那么打開config.php,在$config['encryption_key']后面,隨便加一個密鑰即可。

Tank Auth官網(wǎng)地址http://www.konyukhov.com/soft/tank_auth/

如果出現(xiàn)了錯誤,不要忘記看配置文件(tank_auth.php 和 email.php),安裝完成后類庫應(yīng)該可以完美工作了,但是根據(jù)你的服務(wù)器的條件和你的需要,最好有選擇性的修改一下。

提示:默認情況下,類庫產(chǎn)生強大的系統(tǒng)特定的密碼哈系值是不可移植的,這就是說一旦創(chuàng)建,用戶數(shù)據(jù)庫就不能導(dǎo)出并導(dǎo)入到其他數(shù)據(jù)庫中,這個特性也可以通過配置文件修改。

Tank auth類庫的簡單說明

類庫運用了MVC模型,這也就是說所有的數(shù)據(jù)庫相關(guān)的方法都封裝在了模型(model)文件中,并且類庫本身作也為了這些方法的接口?刂破(auth)處相關(guān)請求,并調(diào)用類庫中的方法,渲染相應(yīng)的視圖(view)(顯示在瀏覽器中或以email方式發(fā)送)?刂破靼缦碌姆椒ǎ

  • login:用戶登錄網(wǎng)站。如果登錄成功,并且用戶賬戶是激活的,用戶將被重定向到首頁。如果未被激活,send_again 將被調(diào)用(看下面)。如果登錄失敗,用戶將繼續(xù)留在相同頁面(登錄頁面);
  • logout:注銷用戶。
  • register:注冊用戶到網(wǎng)站。如果注冊成功,將創(chuàng)建一個用戶賬戶。如果在配置文件中的 email_activation 項的值被設(shè)置為 TRUE,則用戶需要通過點擊發(fā)送到email中的特殊連接激活賬戶;否則默認激活。請注意:注冊完后用戶并沒有通過登錄驗證,仍然需要登錄。
  • send_again:再次發(fā)送激活email到相同或者新的email地址。當為激活用戶登錄是,每次調(diào)用這個方法。當用戶由于信箱的問題或者錯誤的emial地址未收到信件時,這個功能是非常有用的。用戶可以改變他們的email或者保持不變。
  • activate:激活用戶賬戶。通常這個方法是通過點擊email中的鏈接調(diào)用激活的?梢酝ㄟ^點擊”forgot password”,輸入email來激活賬戶。用戶是通過在URL中的用戶的Id和驗證碼來認證的。
  • forgot_password:生成特殊的重置碼(為了修改密碼)并發(fā)送給用戶。很顯然用戶在忘記密碼的時候才會用到該方法。
  • reset_password:用一個新的(用戶設(shè)置的)密碼替換舊的(忘記的)密碼。這個方法可以通過點擊郵件中的連接調(diào)用。用戶是通過在URL中的用戶的Id和驗證碼來認證的。
  • change_password:“正常的”密碼修改(相比于重置密碼)。只能在用戶登錄并且激活的時候才可調(diào)用。為了保證安全,仍然需要驗證用戶秘密。
  • change_email:修改用戶的email。只能在用戶登錄并且激活的時候才可調(diào)用。為了保證安全,仍然需要驗證用戶秘密。這個新的email只有通過點擊發(fā)到這個email中的鏈接才能被激活。
  • reset_email:激活新email地址并用一個新的email地址替換?梢酝c擊郵件中的鏈接調(diào)用該方法。用戶是通過在URL中的用戶的Id和驗證碼來認證的。
  • unregister:刪除用戶賬戶。只能在用戶登錄并且激活的時候才可調(diào)用。為了保證安全,仍然需要驗證用戶秘密。

既然 auth 控制器管理用戶的所以方法 (包括登錄和注銷),所以你未必一定要直接調(diào)用類庫中的方法。但是下面這些是一定要調(diào)用的:

  • is_logged_in:檢測用戶是否登錄網(wǎng)站。
  • get_user_id:如果用戶登錄,獲得用戶Id,否則返回FALSE。
  • get_username:獲得驗證用戶的用戶名,否則返回FALSE。如果該用戶名沒有注冊,調(diào)用這個方法是無意義的(這時候任何用戶都將返回一個空的字符串)。
原文:http://www.dodonline.org/?p=24
關(guān)鍵詞:CodeigniterciTankAuth

贊助商鏈接: