通用後台角色權限管理系統, 基於vue-element-admin 和PHP CodeIgniter 3.1.10 RESTful 實現, 採用前後端分離架構的權限管理系統,PHP快速開發平台,目標是搭建一套簡潔易用的快速解決方案,可以幫助使用者有效降低專案開發難度和成本。
以[email protected] 前端模板為基礎,修改動態路由部分,實現選單路由可根據後端角色進行動態載入.後端路由權限基於php-jwt
使用php CI hook
做token及權限認證
將vue-element-admin前端原來範例範本除首頁、文件外,其餘範例範本歸檔集中在样例模板
範本選單下,請參閱@router/index.js constantRouterMap,其餘元件如tags-views等,全部未做變化,可依需求具體需求進行刪減。
動態切換角色實作見vue-php-admin-V3
jwt token方式
, github/gitee 三方登录
gregwar/captcha
包產生), 企業微信掃碼登入, 見vue-php-admin-V3 logs
表restful規範增刪改查完整範例請見Article.php 控制器
引入了catfan/medoo 包資料庫操作,取代CI框架的部分model, TODO: 使用medoo 完全替換CI的資料庫的操作
使用catfan/medoo 實作複雜分頁過濾排序請參閱article_get() 及users_get() 與vue前端GET 請求構造參數
前端GET請求參數與使用的table 元件有關這裡使用vue-data-tables 元件
GET /articles?offset=1&limit=30&sort=-id&fields=id,title,author&query=~author,title&author=888&title=world
limit: 每页记录数,后台会配置默认值
offset: 第几页,后台会配置默认值
sort: 支持多个参数 &sort=-id,+author => id降序 author 升序
fileds: 指定要获取的显示字段 => 降低网络流量
query: 支持多个参数 &query=~author,title => author like 模糊查询, title精确查询 &author=888&title=world 需要配合query参数才有意义
下載前端程式碼(vue-element-admin目錄)解壓縮
修改介面配置
cat .env.development
# base api
VUE_APP_BASE_API = 'http://www.cirest.com:8890/api/v2/'
運行
npm run dev
下載PHP後端程式碼(CodeIgniter-3.1.10目錄)解壓縮
建立資料庫vueadmin, 導入vueadmin.sql文件,navcat-for-mysql導入有時會出錯時, 修改mysql my.ini設定檔參數mysqld 節點下加入max_allowed_packet = 500M
後端資料庫連線配置修改設定檔
cat applicationconfigdatabase.php
$ db [ ' default ' ] = array(
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => ' root ' ,
' password ' => ' root ' ,
' database ' => ' vueadminv2 ' ,
...
cat applicationconfigconfig.php
// medoodb 初始化数据库全局配置, 注意与CI databases.php 区别, TODO: 完全弃用 CI 自带数据库操作,使用medoodb
$ config [ ' medoodb ' ] = [
' database_type ' => ' mysql ' ,
' database_name ' => ' vueadminv2 ' ,
' server ' => ' localhost ' ,
' username ' => ' root ' ,
' password ' => ' root ' ,
' charset ' => ' utf8 ' ,
//可选:端口
' port ' => 3306 ,
//可选:表前缀
' prefix ' => '' ,
// PDO驱动选项 http://www.php.net/manual/en/pdo.setattribute.php
' option ' => [
PDO :: ATTR_CASE => PDO :: CASE_NATURAL
]
];
CodeIgniter-3.1.10目錄,composer 安裝相關依賴套件php-jwt 與codeigniter-restserver
composer install // 根据composer.json 初始安装所有插件包
或手動
composer require chriskacerguis/codeigniter-restserver
composer require firebase/php-jwt
composer require league/oauth2-github
composer require nette/http
composer require catfan/medoo
使用phpstudy 設定網站網域管理, 同時修改hosts檔案(可選)
www.cirest.com:8890注意與前端介面配置一致BASE_API: '"http://www.cirest.com:8890/api/v2/"'
api接口呼叫使用範例:
http://www.cirest.com:8890/api/v2/sys/user/testapi # 免token认证测试接口正常 对应 GET 请求
http://www.cirest.com:8890/index.php/api/v2/sys/user/testapi
免token認證測試介面在CodeIgniter-3.1.10/config/config.php 配置
$ config [ ' jwt_white_list ' ] = [
' /example/users/get ' ,
' /example/users/post ' ,
' /example/users/delete ' ,
' /article/articles/get ' , // 测试api接口不认证 http://www.cirest.com:8890/api/v2/article/articles uri_string => api/v2/article/articles
' /article/articles/post ' ,
' /article/articles/put ' ,
' /article/articles/delete ' ,
' /sys/user/testapi/get ' ,
]
後端php 介面uri帶有index.php 若要去掉修改根目錄下CodeIgniter-3.1.10/.htaccess
檔(Apache), 注意不是CodeIgniter-3.1.10/application/
目錄下
cat CodeIgniter-3.1.10/.htaccess
< IfModule mod_rewrite.c >
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?/$1 [QSA,PT,L]
</ IfModule >
Nginx的話需要修改nginx對應的配置
sys_perm
表,系統的超級管理員角色自動擁有了所有權限(也可根據具體業務需求進行設計)Tables_in_vueadminv2 | 說明 |
---|---|
keys | PHP CI RESTful apikey可config.php開啟關閉 |
logs | PHP CI RESTful 日誌表可config.php開啟關閉 |
sys_dept | 系統部門表 |
sys_menu | 系統選單表 |
sys_perm | 系統權限表 |
sys_perm_type | 權限類型(暫時未使用) |
sys_role | 系統角色表 |
sys_role_perm | 角色權限關係表 |
sys_user | 系統使用者表 |
sys_user_dept | 使用者所屬部門表(可一對多) |
sys_user_role | 使用者角色對應關係 |
sys_user_token | 使用JWT token此表無用 |
upload_tbl | 業務測試表 |
php 7.3.4nts
+ Apache 2.4.39
CodeIgniter-3.1.10applicationconfigconfig.php // access_token/refresh_token
過期時間配置
$config['jwt_access_token_exp'] = 15; // 单位秒
$config['jwt_refresh_token_exp'] = 180; // 单位秒