日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

**[权限控制] 利用CI钩子实现权限认证

發(fā)布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 **[权限控制] 利用CI钩子实现权限认证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://codeigniter.org.cn/forums/thread-10877-1-1.html

一直沒找到CI的權(quán)限認(rèn)證擴(kuò)展,以前好像找到過一個老外的擴(kuò)展,不過不怎么好用,現(xiàn)在記不清了,后來仿著jsp firter的方式用CI鉤子寫了一下,感覺還可以,做個小網(wǎng)站,小應(yīng)用足夠了,沒必要搞得太復(fù)雜。看到很多人在網(wǎng)上問,這里把我們的方法分享一下,如果你有更好的實現(xiàn),也請記得分享給我們。^_^

通常我們后臺路徑看起來都會像下面這樣:

?

http://www.php-chongqing.com/index.php/manage/

?

http://www.php-chongqing.com/index.php/manage/article/add

?

http://www.php-chongqing.com/index.php/manage/product/delete/1

?

http://www.php-chongqing.com/index.php/manage/user



因為CI是MVC的,單一入口,并且給我們提供了7個掛鉤點,一切就很簡單了,我們只需要在CI執(zhí)行目標(biāo)控制器方法之前攔截到請求,檢查URI是否是以manage開頭即可,如果URI以manage開頭,就檢查用戶權(quán)限,沒有權(quán)限就跳轉(zhuǎn)到登陸頁或是相關(guān)的提示頁。



1、先到config/config.php中設(shè)置允許使用鉤子


$config['enable_hooks']?=?TRUE;

2、再到config/hooks.php中配置權(quán)限認(rèn)證鉤子


$hook['post_controller_constructor']?=?array(? ??'class'? ??=>?'ManageAuth',? ??'function'?=>?'auth',? ??'filename'?=>'ManageAuth.php',? ??'filepath'?=>?'hooks');

需要注意的是一定要使用'post_controller_constructor'掛鉤點,因為我們可能要在ManageAuth中使用CI的aip,連接數(shù)據(jù)庫等。



3、創(chuàng)建ManageAuth.php文件,放到hooks目錄下,ManageAuth.php中的代碼如下:

?

/** 后臺權(quán)限攔截鉤子 * @link http://www.php-chongqing.com * @author bing.peng * */
class ManageAuth {
private $CI;
public function __construct()
{
$this->CI = &get_instance();
}
//權(quán)限認(rèn)證
public function auth()
{
$this->CI->load->helper('url');
    if ( preg_match("/manage.*/i", uri_string()) ) {
       // 需要進(jìn)行權(quán)限檢查的URL
       $this->CI->load->library('session');
       if( !$this->CI->session->userdata('username') ) {
       // 用戶未登陸
       redirect('login');
       return;
     }
    }
}

}

?



OK,就這樣,搞定了,我們通過正則表達(dá)匹配,凡是以manage打頭的url都是需要登陸后才能訪問的。

?

示例中的權(quán)限認(rèn)證很簡單,僅僅只是檢查下session是否存有username,如果有就認(rèn)為用戶已登陸,可以訪問資源,否則就跳轉(zhuǎn)到登陸頁面。注意登陸的url千萬不是能以manage開頭,否則就重向定死循環(huán)了。



如果,你須更復(fù)雜的權(quán)限認(rèn)證直接寫你自己的認(rèn)證方法就OK了,比如你使用了用戶、角色、資源等等。



這種實現(xiàn)基本可以算作AOP(面向切面編程)了,其實PHP已經(jīng)有了AOP的雛形,改天用原生PHP的方法攔截,實現(xiàn)一下權(quán)限認(rèn)證。^_^

轉(zhuǎn)載于:https://www.cnblogs.com/kenshinobiy/p/4414962.html

總結(jié)

以上是生活随笔為你收集整理的**[权限控制] 利用CI钩子实现权限认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。