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>";
}
在我們自己的擴充套件中,進入元件或者外掛的前部,就寫如這樣的程式碼,就可以判斷是否有訪問和執行某項任務的許可權了許可權了。
相關文章
- ios 判斷使用者是否開啟許可權---並跳轉設iOS
- Spring Security 基於URL的許可權判斷Spring
- 一對一原始碼,前端頁面許可權和按鈕許可權控制原始碼前端
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼
- 使用者和組的許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Spring安全的角色和許可權原始碼與教程 - javadevjournalSpring原始碼Javadev
- django中介軟體中判斷前端是不是ajax請求,從而判斷是否有許可權Django前端
- linux使用者許可權Linux
- 如何檢查某個使用者是否具有某個許可權物件上定義的某種許可權物件
- 選單許可權和按鈕許可權設定
- Linux的檔案存取許可權和0644許可權Linux
- MySQL建立使用者,配置許可權、密碼策略MySql密碼
- MySQL-03.使用者管理和許可權管理MySql
- mysql 新增、刪除使用者和許可權分配MySql
- Linux使用者與許可權Linux
- mysql使用者許可權管理MySql
- h5直播原始碼,使用者登入流程及許可權校驗H5原始碼
- PostgreSQL物件許可權如何在後設資料中獲取-許可權解讀、定製化匯出許可權SQL物件
- 協同平臺檢視許可權開啟業務物件提示"當前使用者沒有許可權!請檢查使用者[BOS設計器]的[編輯]許可權與應用的編輯許可權!"物件
- Android6.0------許可權申請管理(單個許可權和多個許可權申請)Android
- Django-Rest-Framework 許可權管理原始碼淺析DjangoRESTFramework原始碼
- drf 許可權校驗設定與原始碼分析原始碼
- MYSQL學習筆記13: DCL許可權控制(使用者許可權操作)MySql筆記
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- 如何檢查某使用者是否分配了某ABAP許可權物件物件
- Linux下的檔案許可權和使用者身份Linux
- 許可權之選單許可權
- Linux使用者、組、許可權管理Linux
- MySQL使用者及許可權管理MySql
- Oracle使用者角色許可權管理Oracle
- linux5-使用者許可權Linux
- MySql查詢使用者許可權MySql
- MySQL 使用者及許可權管理?MySql
- 淺談PostgreSQL使用者許可權SQL
- MongoDB 使用者與許可權管理MongoDB
- CDB和PDB關於使用者建立和使用者許可權區別
- mysql 給了使用者所有許可權ALL PRIVILEGES,但是該使用者沒有grant許可權MySql
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由