Skip to content

基于laravel5.5开发的基础后台管理脚手架, RBAC权限控制; 接口基于dingo/api和tymon/jwt, 可在此基础上完成你的laravel项目

Notifications You must be signed in to change notification settings

lonycc/laravel_admin_api

Repository files navigation

Build Status

laravel5.5 后台管理

启动步骤

1 先clone本项目:git clone https://github.com/tonyxyl/laravel_admin_api.git

2 安装PHP依赖库:composer install

3 修改.env数据库配置信息

4 执行迁移命令: php artisan migrate

5 执行数据填充: php artisan db:seed --class=PermissionSeeder

6 启动服务: php artisan serve

注意

添加操作管理的数据的时候,命名空间、类名、方法名请根据实际情况添加,不要添加不存在的命名空间、类,否则程序会报错. 当添加不存在的命名空间、类名、方法名的时候,程序在生成URL的时候会提示找不到相应的类

开始

浏览器打开 http://localhost:8000/admin/login 进入登录界面:

用户角色:用户名/密码

管理员账号:admin/123456

api调用测试

注册用户

curl -X POST -F "name=test" -F "email=test@test.com" -F "password=test1234" "http://localhost:8000/api/auth/signup"

返回结果

{
  "code":200,
  "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hcGkvYXV0aC9zaWdudXAiLCJpYXQiOjE1MTYxNTM3MDcsImV4cCI6MTUxNjE1NzMwNywibmJmIjoxNTE2MTUzNzA3LCJqdGkiOiJkOUQ5N250MzNOVWFvSXM1In0.3GIsMuQhRXXwO4vIn7kLR9BhW3kcbNxZw0vUGgqvEDw"
}

登录

curl -X POST -F "name=test" -F "password=test1234" "http://localhost:8000/api/auth/login"

返回结果

{
  "code":200,
  "message":"token生成成功",
  "data":{
    "token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hcGkvYXV0aC9sb2dpbiIsImlhdCI6MTUxNjE1Mzc3NCwiZXhwIjoxNTE2MTU3Mzc0LCJuYmYiOjE1MTYxNTM3NzQsImp0aSI6IlV0dnhuaVFRc3M4bjFUaDEifQ.lNguCrjUvukdr4lQekxvnJxySX6rn0ab-g7RpVeiL10"
  }
}

注意: 你可以改成用邮箱和密码去认证登录, 需要改动app/Api/V1/Controllers/AuthController.php中的getCredentials方法, 改成return $request->only('email', 'password');即可.

请求权限数据

curl -X GET -H "Authorization: Bearer 上面获取到的token" "http://localhost:8000/api/auth/user"

返回结果

{
  "code": 200,
  "message": "已授权的用户",
  "data": {
    "id": 1,
    "email": "test@test.com",
    "name": "test",
    "created_at": null,
    "updated_at": null
  }
}

刷新授权

curl -X PATCH -H "Authorization: Bearer 上面获取到的token" "http://localhost:8000/api/auth/refresh"

返回结果

{
  "code": 200,
  "message": "token刷新成功",
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hcGkvYXV0aC9yZWZyZXNoIiwiaWF0IjoxNTE2MTUzNzc0LCJleHAiOjE1MTYxNTc4NzAsIm5iZiI6MTUxNjE1NDI3MCwianRpIjoiSHNYclNGc1h1eGdUOVVmdCJ9.7d-kK_Bnva9W5U2dzBNVhvFaGcLbY7Ikqm891uqiXEE"
  }
}

删除授权

curl -X DELETE "Authorization: Bearer 上面获取到的token" "http://localhost:8000/api/auth/invalidate"

返回结果

{
  "code": 200,
  "message": "token删除成功"
}

接入其他应用实现单点登录的方式

其他应用需要实现一个验证逻辑, 拿到登录后的token请求/api/auth/user接口, 如果能获取到用户信息则鉴权成功, 执行登录; 否则跳回到统一登录入口.

后台截图

登录页面

后台首页

用户管理

角色管理

操作管理

常用的第三方服务包

图形验证码

composer require mews/captcha

Mews\Captcha\CaptchaServiceProvider::class,

'Captcha' => Mews\Captcha\Facades\Captcha::class,

php artisan vendor:publish #生成config/captcha.php

图片处理扩展包

composer require intervention/image

Intervention\Image\ImageServiceProvider::class,

'Image' => Intervention\Image\Facades\Image::class,

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5" #生成config/image.php

// 修改指定图片的大小

$img = Image::make('images/avatar.jpg')->resize(200, 200);

// 插入水印, 水印位置在原图片的右下角, 距离下边距 10 像素, 距离右边距 15 像素

$img->insert('images/watermark.png', 'bottom-right', 15, 10);

// 将处理后的图片重新保存到其他路径

$img->save('images/new_avatar.jpg');

// 上面的逻辑可以通过链式表达式搞定

$img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);

excel服务

composer require "maatwebsite/excel:~2.1.0"

Maatwebsite\Excel\ExcelServiceProvider::class,

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" #生成config/excel.php

pdf 服务

composer require barryvdh/laravel-dompdf

Barryvdh\DomPDF\ServiceProvider::class,

'PDF' => Barryvdh\DomPDF\Facade::class,

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider" #生成config/dompdf.php

html过滤包

composer require mews/purifier

Mews\Purifier\PurifierServiceProvider::class,

'Purifier' => Mews\Purifier\Facades\Purifier::class,

php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider" #生成config/purifier.php

clean(Input::get('inputname'));

Purifier::clean(Input::get('inputname'));

浏览器跨域

composer require barryvdh/laravel-cors

Barryvdh\Cors\ServiceProvider::class,

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider" #生成config/cors.php

根据ip获取地址位置

composer require "zhuzhichao/ip-location-zh"

'Ip' => 'Zhuzhichao\IpLocationZh\Ip::class,

Ip::find('171.12.10.156') or Ip::find(Request::getClientIp())

laravel队列

配置文件config/queue.php, 可选驱动sync/database/sqs/redis

若使用database驱动, 需要执行 php artisan queue:tablephp aritsan migrate 以创建表.

若使用redis驱动, 需要配置config/databse.php里的redis项; 需要安装依赖predis/predis.

执行 php artisan make:job SendReminderEmail 将在 app/Jobs 目录下生成 SendReminderEmail.php

About

基于laravel5.5开发的基础后台管理脚手架, RBAC权限控制; 接口基于dingo/api和tymon/jwt, 可在此基础上完成你的laravel项目

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published