1 Star 0 Fork 18

举子 / huicmf_webman

forked from 小灰灰 / huicmf_webman 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

基于webman+mysql 开发的php后台权限管理系统

huicmf_webman

支持一键CURD

项目地址:

【gitee】

https://gitee.com/xianrenqh/huicmf_webman

使用文档地址:

https://gitee.com/xianrenqh/huicmf_webman/wikis/pages


后台演示

http://webman.xiaohuihui.net/admin

账号:admin

密码:admin888

运行环境~~!:

php: 8.0.2+

mysql: 5.5+

Redis

备注:

后台登录做了登录错误安全限制:

  1. 5分钟内连续错误超过5次,限制此ip再次访问。(需要在后台设置里(或者数据库中)解除ip)
  2. N分钟内连续N次输入密码错误,此账号将禁止登录。(过去N分钟之后才能再次登录)
  3. 2中的N可以在环境变量.env中设置(默认均为10)

安装:

1.首先clone代码到项目目录:

https://gitee.com/xianrenqh/huicmf_webman.git

2.在项目根目录执行:

composer update

3.导入并配置数据库:

导入数据并配置数据库文件方式有2种。任意一种即可。

1.命令行导入

在命令输入以下命令并执行:

# 简洁命令
php webman config:mysql --u root --p 123456 --d databasename
#完整命令
php webman config:mysql --h 127.0.0.1 --port 3306 --u root --p 123456 --d databasename --in 0

命令行中参数意义:

参数 是否必填 默认值 描述
--h 127.0.0.1 host地址
--port 3306 端口号
--u 数据库用户名
--p 数据库密码
--d 数据库名
--in 0 是否强制安装数据库:是=1

注意:

  1. 如果数据库已存在,同时想要强制(覆盖)安装,请携带参数 "--in 1" 。否则请更换数据库名
  2. 如果地址和端口一致,可以不写其参数
  3. 如果携带参数,那么参数后面的值必须存在。
  4. 如果数据库的密码为空,此方法无法安装,原因同3。

2.原始sql导入

1.根目录找到 install.sql 并导入数据库

2.设置 config/thinkorm.php 文件中的数据库配置

3.如果使用.env文件,请把根目录下.example.env重命名为:.env并设置.env中的数据库配置

4.【注:】 如果使用.env配置数据库,则 config/thinkorm.php 文件的数据库配置项不生效。

4.服务器放行端口

默认端口:8787

更改默认端口方法:

如果使用了.env文件,请在env文件中更改端口【APP_PORT】


如果没有使用.env文件:

请在\config\server.php 文件中更改:

'listen' => 'http://0.0.0.0:8787',

5.执行启动命令

(不知道命令的可以继续往下看)

6.愉快的访问后台吧:

http://127.0.0.1:8787/admin

用户名:admin

密码: 123456


7.配置伪静态(nginx转发[需要配置nginx反代]):

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    if (!-f $request_filename){
        proxy_pass http://webman;
    }
}

8.配置网站的运行目录为:public

9.绑定域名

(不绑定域名请使用 ip+端口访问)

10.可以愉快的使用绑定的域名访问啦啦啦

忘记后台密码

如果忘记密码,或者密码不对,请修改数据库表:cmf_admin

password: 4d934790841a4d8575c21e86b5b3eb71

salt: VkMJ27

对应的明文密码为:123456

启动方式(命令)

windows开发环境

php windows.php start

Linux生产环境

php start.php start
php start.php start -d

平滑重启

php start.php reload

更改redis配置

如需更改redis配置,需要更改以下2个地方:

(个人如果另行安装其他带有redis的插件的,需要另行更改其配置)

  1. 环境变量.env文件对应的redis配置
  2. webman-redis-queue配置: config/plugin/webman/redis-queue/redis.php

注意:

如果没有使用.env环境变量,则另需更改以下3个地方的配置

  1. \config\redis.php
  2. \config\session.php
  3. \config\thinkcache.php

.env环境

请复制或者重命名一份.example.env 为 .evn文件。并编辑里面的数据库配置 如果是使用命令行安装的,则无需复制并编辑数据

orm使用think的。 数据库链接配置文件在:

config\thinkorm.php

nginx代理

伪静态

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    if (!-f $request_filename){
        proxy_pass http://webman;
    }
}

当webman需要直接提供外网访问时,建议在webman前增加一个nginx代理,这样有以下好处。

  • 静态资源由nginx处理,让webman专注业务逻辑处理
  • 让多个webman共用80、443端口,通过域名区分不同站点,实现单台服务器部署多个站点
  • 能够实现php-fpm与webman架构共存
  • nginx代理ssl实现https,更加简单高效
  • 能够严格过滤外网一些不合法请求
upstream webman {
    server 127.0.0.1:8787;
    keepalive 10240;
}

server {
  server_name 站点域名;
  listen 80;
  root /your/webman/public;

  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      if (!-f $request_filename){
          proxy_pass http://webman;
      }
  }
}

代码输出json数据

可以有以下2种方式:

方法1:

# 全局均可使用
return success_json();
return error_json();

方法2:

# 需要公公控制器先继承 \app\BaseController;
# 然后引入 public function __construct()
# 默认后台模块(admin)已继承,可直接使用。其他模块需要自行继承
return $this->success();
return $this->error();

error输出,可以在msg位置输出数组:['code'=>204,'msg'=>'error'],此时输出的json code值为对应的204


huiCmf后台基本模块:

  1. 管理员管理
  2. 权限节点管理
  3. 角色组管理
  4. 后台菜单管理
  5. 定时任务管理
  6. 数据库管理
  7. 支持一键CURD

【权限节点管理】

使用的是控制器注解权限来增加(删除)权限节点

【定时任务管理】

定时任务,使用的是后台自带的定时任务,类似宝塔定时任务管理功能

后台图片上传(选择图片框)

案例页面:【后台-上传测试页】

案例代码,请参考 app/admin/view/upload_test.html 文件

上传使用说明:

单图上传:

<div class="layui-form-item huicmf-upload">
   <label class="layui-form-label">头像</label>
   <div class="layui-input-inline" style="width: 50%">
      <input type="text" name="avatar" value=""
             onmouseover="hui_img_preview('avatar-select-input',this.value)"
             onmouseout="layer.closeAll();" id="avatar-select-input" autocomplete="off"
             class="layui-input">
   </div>
   <div class="layui-input-inline" style="width: 120px">
      <a class="layui-btn"
         data-open-pic="{:__url('index/file_list',['type'=>'one','select_id'=>'avatar-select-input'])}">
         <i class="layui-icon">&#xe67c;</i>选择图片
      </a>
   </div>
</div>

参数说明:

  1. 最顶部需要有class类名:huicmf-upload

  2. input回调框的代码中,hui_img_preview 里面的值和id值需要相同

  3. 点击按钮 a 标签 里面:

    打开选择框属性:data-open-pic="{:__url('index/file_list',['type'=>'one','select_id'=>'avatar-select-input'])}",其中:

    type=>'one' 意思是:单张图

    select_id' 意思是:需要传递回调数据表单的id字段


多图上传:

<div class="layui-form-item huicmf-upload">
   <label class="layui-form-label">多图选择</label>
   <div class="layui-input-block" style="margin-top: 15px;">
      <a class="layui-btn" data-open-pic="{:__url('index/file_list',['type'=>'more','select_id'=>'uploader-list'])}"><i class="layui-icon">&#xe67c;</i>选择图片</a>
      <div style="margin-top: 15px;">
         <small>(可拖拽图片调整显示顺序 )</small>
      </div>
      <!--回调显示选择的图片-->
      <div class="uploader-list am-cf" id="uploader-list" data-nums="3" ></div>
   </div>
</div>

注意:由于增加了多选图的数量判断(限制),需要注意以下代码:

<div class="uploader-list am-cf" data-nums="0"></div>

其中:data-nums参数为多图的数量(如果是添加,默认为0,如果是编辑,请传递后台图片数量到此值)

参数说明:

  1. 最顶部需要有class类名:huicmf-upload

  2. input回调框的代码中,hui_img_preview 里面的值和id值需要相同

  3. 点击按钮 a 标签 里面:

    打开选择框属性:data-open-pic="{:__url('index/file_list',['type'=>'more','select_id'=>'uploader-list'])}",其中:

    type=>'more' 意思是:单张图

    select_id' 意思是:需要传递回调数据的id

API接口开发

(如果不喜欢此接口开发,可以删掉api文件夹里的代码,自行开发自己的接口)

接口说明

接口的访问地址为:http://127.0.0.1:8787/api

请求方法: post

参数格式为:method 调用具体方法

其它参数:根据每个参数来定义。

需要登录的接口,可以用$this->userId获取当前访问用户id

$this->userId

**需要登录的接口的接口必须传递参数 token **

判断登录与否的标准就是是否在本地保存了token,如果保存了,就是登录状态,如果没有保存,就是未登录状态,需要登录的接口会自动带上token来进行请求数据。

api.php配置文件

config/api.php

新增接口均需要在此文件中增加接口配置

新增一个接口

新增接口时,需要先在api模块中增加一个接口控制器,所有接口控制器均要继承\app\api\controller\ApiController 控制器,如:

控制器名称需要使用完整名称,需要带上"Controller",如:TestController

例如:

namespace app\api\controller;
class TestController extends ApiController{
    public function list(){}
}

然后在接口配置文件 config\api.php 中定义下新增的接口

'test'=>[
    'code' => 'Test',
    'method'    =>  [
        'getlist' => [
            'code' => 'list',
            'is_login' => false
        ]
    ]
]

最外面的test是url地址调用的第一个参数 code对应的是接口控制器类名 method里面定义的是参数 getlist是外部访问的方法名,getlist里面code是Test控制器里面的具体方法名 is_login 含义为是否需要登录,当is_login 为true时,必须传token。可使用$this->userId 获取当前登录用户

公共接口

如果是一个公共数据接口,直接在 app\api\controller\CommonController.php 文件中写方法,任意请求方式访问:

http://你的域名/api.html/common/test 即可。

接口调用案例(以UserController为例):

基本信息

  • 接口URL: https://你的域名/api
  • 请求方式: POST
  • Content-Type: multipart/form-data

请求参数:

接口请求参数见下表:

Body参数说明 (multipart/form-data)

参数名 示例值 是否必填 参数描述
method user.login 必填 接口方法
username admin 必填 登录名
password admin 必填 密码

响应示例

正确响应示例

{
   "code": 200,
   "data": "c9d2343fd754ca12a9be33e957574cce",
   "msg": ""
}

错误响应示例



{
   "code": 0,
   "msg": "没有找到此账号",
   "data": ""
}

webman

High performance HTTP Service Framework for PHP based on Workerman.

Manual【文档】

https://www.workerman.net/doc/webman

Benchmarks

https://www.techempower.com/benchmarks/#section=test&runid=9716e3cd-9e53-433c-b6c5-d2c48c9593c1&hw=ph&test=db&l=zg24n3-1r&a=2 image

LICENSE

MIT


特别感谢

以下项目排名不分先后

PhpStorm logo PhpStorm logo

版权信息

HuiCMF遵循Apache2.0开源协议发布,并允许商业使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2019-2022 by xiaohuihui (https://xiaohuihui.net.cn) All rights reserved。

免责声明

HuiCMF遵循Apache2.0开源协议发布,并允许商业使用。任何用户在使用HuiCMF后台框架前,请您仔细阅读并透彻理解本声明。您可以选择不使用HuiCMF后台框架,若您一旦使用HuiCMF 后台框架,您的使用行为即被视为对本声明全部内容的认可和接受。

仅供技术研究使用,请勿用于非法用途,否则产生的后果作者概不负责。

  • HuiCMF后台框架是一款开源免费的后台快速开发框架 ,主要用于更便捷地开发后台管理;其尊重并保护所有用户的个人隐私权,不窃取任何用户计算机中的信息。更不具备用户数据存储等网络传输功能。
  • 您承诺秉着合法、合理的原则使用HuiCMF后台框架,不利用HuiCMF后台框架进行任何违法、侵害他人合法利益等恶意的行为,亦不将HuiCMF后台框架运用于任何违反我国法律法规的 Web 平台。
  • 任何单位或个人因下载使用HuiCMF后台框架而产生的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带或衍生的损失等),本开源项目不承担任何法律责任。
  • 用户明确并同意本声明条款列举的全部内容,对使用HuiCMF后台框架可能存在的风险和相关后果将完全由用户自行承担,本开源项目不承担任何法律责任。
  • 任何单位或个人在阅读本免责声明后,应在《MIT 开源许可证》所允许的范围内进行合法的发布、传播和使用HuiCMF后台框架等行为,若违反本免责声明条款或违反法律法规所造成的法律责任(包括但不限于民事赔偿和刑事责任),由违约者自行承担。
  • 如果本声明的任何部分被认为无效或不可执行,其余部分仍具有完全效力。不可执行的部分声明,并不构成我们放弃执行该声明的权利。
  • 本开源项目有权随时对本声明条款及附件内容进行单方面的变更,并以消息推送、网页公告等方式予以公布,公布后立即自动生效,无需另行单独通知;若您在本声明内容公告变更后继续使用的,表示您已充分阅读、理解并接受修改后的声明内容。
MIT License Copyright (c) 2021 walkor<walkor@workerman.net> and contributors (see https://github.com/walkor/webman/contributors) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Huicmf基于 webman开发的 后台权限管理系统 展开 收起
PHP
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/52juzi/huicmf_webman.git
git@gitee.com:52juzi/huicmf_webman.git
52juzi
huicmf_webman
huicmf_webman
master

搜索帮助