Sistema universal de gerenciamento de permissões de função de back-end, baseado em vue-element-admin e PHP CodeIgniter 3.1.10 Implementação RESTful. Adota um sistema de gerenciamento de permissões com arquitetura de separação de front-end e back-end e uma plataforma de desenvolvimento rápido de PHP. construir uma solução rápida, simples e fácil de usar. Ela pode ajudar os usuários a reduzir efetivamente as dificuldades e custos de desenvolvimento do projeto.
Com base no modelo de front-end [email protected], modifique a parte de roteamento dinâmico para perceber que o roteamento do menu pode ser carregado dinamicamente de acordo com a função de back-end. As permissões de roteamento de back-end são baseadas em php-jwt
e use php CI hook
para autenticação de token e permissão.
Exceto para a página inicial e os documentos, os modelos de amostra originais do front-end vue-element-admin são arquivados no menu样例模板
, consulte @router/index.js constanteRouterMap e outros componentes, como tags-views, etc. , não são feitas alterações podem ser feitas e excluídas com base em necessidades específicas.
Para a implementação de troca dinâmica de funções, consulte vue-php-admin-V3
jwt token方式
, github/gitee 三方登录
gregwar/captcha
), código de verificação WeChat corporativo para fazer login, consulte vue-php-admin-V3 logs
Para um exemplo completo de adição, exclusão, modificação e consulta de especificações repousantes, consulte o artigo.controlador php
A operação de banco de dados do pacote catfan/medoo é introduzida para substituir parte do modelo da estrutura de CI TODO: Use medoo para substituir completamente a operação de banco de dados de CI.
Use catfan/medoo para implementar filtragem e classificação de paginação complexa Consulte article_get() e users_get() e parâmetros de construção de solicitação GET de front-end vue.
Os parâmetros de solicitação GET front-end estão relacionados ao componente de tabela usado. O componente vue-data-tables é usado aqui.
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参数才有意义
Baixe o código front-end (diretório vue-element-admin) e descompacte-o
Modificar configuração da interface
gato .env.desenvolvimento
# base api
VUE_APP_BASE_API = 'http://www.cirest.com:8890/api/v2/'
correr
npm run dev
Baixe o código backend PHP (diretório CodeIgniter-3.1.10) e descompacte-o
Crie o banco de dados vueadmin e importe o arquivo vueadmin.sql Quando a importação navcat-for-mysql às vezes causa erros, modifique o parâmetro do arquivo de configuração my.ini mysqld e adicione max_allowed_packet = 500M no nó.
Arquivo de configuração de modificação de configuração de conexão de banco de dados de back-end
aplicativo catconfigdatabase.php
$ db [ ' default ' ] = array(
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => ' root ' ,
' password ' => ' root ' ,
' database ' => ' vueadminv2 ' ,
...
aplicativo catconfigconfig.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
]
];
Diretório CodeIgniter-3.1.10, o compositor instala pacotes de dependências relacionados php-jwt e codeigniter-restserver
composer install // 根据composer.json 初始安装所有插件包
Ou manualmente
composer require chriskacerguis/codeigniter-restserver
composer require firebase/php-jwt
composer require league/oauth2-github
composer require nette/http
composer require catfan/medoo
Use o phpstudy para configurar o gerenciamento de nomes de domínio do site e modificar o arquivo hosts (opcional)
www.cirest.com:8890 Observe que é consistente com a configuração da interface front-end BASE_API: '"http://www.cirest.com:8890/api/v2/"'
Exemplo de uso de chamada de interface 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
A interface de teste de autenticação sem token está configurada em 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 ' ,
]
O uri da interface php de backend contém index.php. Se você deseja remover e modificar CodeIgniter-3.1.10/.htaccess
(Apache) no diretório raiz, observe que ele não está CodeIgniter-3.1.10/application/
diretório.
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 >
Para Nginx, você precisa modificar a configuração correspondente do nginx.
sys_perm
. A função de superadministrador do sistema possui automaticamente todas as permissões (também pode ser projetada de acordo com necessidades específicas do negócio). )Tabelas_in_vueadminv2 | ilustrar |
---|---|
chaves | PHP CI RESTful apikey pode ser ativado e desativado em config.php |
registros | A tabela de log PHP CI RESTful pode ser ativada e desativada em config.php |
sys_dept | Tabela de departamento do sistema |
menu_sys | Tabela de menu do sistema |
sys_perm | Tabela de permissões do sistema |
sys_perm_type | Tipo de permissão (ainda não usado) |
função_sys | Tabela de funções do sistema |
sys_role_perm | Tabela de relacionamento de permissão de função |
usuário_sys | Tabela de usuários do sistema |
sys_user_dept | Tabela de departamentos aos quais os usuários pertencem (pode ser um para muitos) |
sys_user_role | Correspondência de função do usuário |
sys_user_token | Usando o token JWT, esta tabela é inútil |
upload_tbl | Formulário de teste de negócios |
php 7.3.4nts
+ Apache 2.4.39
CodeIgniter-3.1.10applicationconfigconfig.php // configuração do tempo de expiração access_token/refresh_token
$config['jwt_access_token_exp'] = 15; // 单位秒
$config['jwt_refresh_token_exp'] = 180; // 单位秒