joomla原始碼探析續(二十六)JUser物件和使用者許可權判斷
每一個訪問Joomla網站的使用者都對應這一個JUser物件,通過$user =& JFactory::getUser() 就可以獲得這個物件引用並訪問物件的成員函式和屬性。
下面的程式碼就是顯示使用者的名稱,郵件的一段程式碼:
echo "<p>Your name is {$user->name}, your email is {$user->email}, and your username is {$user->username}</p>";
echo "<p>Your usertype is {$user->usertype} which has a group id of {$user->gid}.</p>";
我們來看看JUser的屬性和成員函式:
id - 使用者唯一編號
name - 姓名
username - 帳號
email - 郵件
password - 密碼
password_clear - 使用者修改密碼的時候設定真
usertype - 使用者型別(Super Administrator, Editor)
gid - 使用者的型別id ,與usertype對應
block - 是否被阻止,如果阻止就設為1
registerDate - 註冊日期
lastvisitDate - 最後一次登入日期
guest - 如果使用者未登入就設定為1,其他以上的欄位都設定為空
以上的屬性都可以直接訪問,如果想獲取資料庫中其他的引數,可以通過getParam函式來獲得,下面的程式碼獲取的使用者的語言引數:
$user =& JFactory::getUser();
$language = $user->getParam('language', 'the default');
echo "<p>Your language is set to {$language}.</p>";
通常判斷使用者是否登入都是通過guest來判斷的,當然通過id是否大於0也可以。
使用者訪問許可權
不同的Joomla使用者可能會有不同的許可權,可以通過authorize()成員函式來判斷一個使用者是否具有執行某項任務的權利。authorize()有四個引數,第一個是我們要驗證元件或者函式,第二個是任務,第三,四個分別是記錄型別record types和ownership respectively相對關係,(英文很清晰,中文怎麼這麼難懂)。
libraries/joomla/user/authorization.php檔案中包含了所有的使用者許可權項。我們來看下面的程式碼:
$user =& JFactory::getUser();
if ($user->authorize('com_content', 'edit', 'content', 'all')) {
echo "<p>You may edit all content.</p>";
} else {
echo "<p>You may not edit all content.</p>";
}
if ($user->authorize('com_content', 'publish', 'content', 'own')) {
echo "<p>You may publish your own content.</p>";
} else {
echo "<p>You may not publish your own content.</p>";
}
上面的第一段程式碼就是判斷使用者是否可以編輯所有的文章,第二段則是判斷是否可以釋出自己的文章。
如果你自己開發了擴充套件,標準的許可權也許並不合適你,那麼你還可以新增自定義的許可權項。以下是新增許可權的程式碼例子:
$auth =& JFactory::getACL();
$auth->addACL('com_userinfo15', 'persuade', 'users', 'super administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'administrator');
$auth->addACL('com_userinfo15', 'persuade', 'users', 'manager');
$user =& JFactory::getUser();
if ($user->authorize('com_userinfo15', 'persuade')) {
echo "<p>You may persuade the system to do what you wish.</p>";
} else {
echo "<p>You are not very persuasive.</p>";
}
在我們自己的擴充套件中,進入元件或者外掛的前部,就寫如這樣的程式碼,就可以判斷是否有訪問和執行某項任務的許可權了許可權了。
相關文章
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- 使用者物件許可權管理物件
- Joomla1.6的許可權層級OOM
- ios 判斷使用者是否開啟許可權---並跳轉設iOS
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- Spring Security 基於URL的許可權判斷Spring
- 基於二進位制的許可權判斷
- mysql使用者和許可權MySql
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼
- 系統許可權傳遞和物件許可權傳遞的測試物件
- 自定義許可權物件物件
- 物件許可權的回收物件
- Linux - 判斷檔案/目錄是否存在/具有許可權Linux
- 使用者有connect,resource,dba角色許可權後回收dba許可權導致無UNLIMITED TABLESPACE許可權造成業務中斷MIT
- 使用者許可權繼承另一使用者的許可權繼承
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 如何判斷是否得到"android.permission.PACKAGE_USAGE_STATS"許可權AndroidPackage
- shell判斷檔案,目錄是否存在或者具有許可權【轉】
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- django中介軟體中判斷前端是不是ajax請求,從而判斷是否有許可權Django前端
- SAP自定義許可權物件物件
- 檢視不同許可權使用者所擁有的物件物件
- 批量修改資料夾及檔案使用者許可權和使用者組許可權 centosCentOS
- Android系統許可權和root許可權Android
- oracle使用者許可權Oracle
- mysql使用者許可權MySql
- oracle 使用者許可權Oracle
- Struts開發一個許可權驗證攔截器來判斷使用者是否登入
- mysql 使用者管理和許可權設定MySql
- 學習筆記 使用者和許可權筆記
- Oracle檢視使用者預設表空間、臨時表空間、系統許可權、物件許可權、角色許可權舉例說明Oracle物件
- 學習筆記 物件許可權筆記物件
- 選單許可權和按鈕許可權設定
- Oracle資料庫的系統和物件許可權Oracle資料庫物件
- Spring安全的角色和許可權原始碼與教程 - javadevjournalSpring原始碼Javadev
- 檢視角色裡包含的系統許可權、物件許可權和角色物件
- 提取使用者許可權或是不同資料庫使用者許可權的同步資料庫