基于laravel+vue的基础后台

基于laravel+vue的基础后台, 前后端分离, 欢迎fork&start, 不合理的地方也欢迎批评指正

内置REDIS队列示例+websocket示例

DEMO

pleaseyang.gitee.io/ity-show

账号 look 密码 123456

PHP

gitee.com/pleaseyang/Ity

github.com/pleaseyang/Ity

VUE

gitee.com/pleaseyang/ItyWeb

github.com/pleaseyang/ItyWeb

API文档

API文档 docs.apipost.cn/view/27e22c203e0d4...

功能模块

RBAC权限

RBAC权限
整合 laravel-permission 制作的权限角色, 管理员可绑定角色, 也可以单独设置权限

操作记录

操作记录
整合 laravel-activitylog 制作的操作记录, 可查看修改前后的JSON

文件管理

文件管理
仿照 阿里云OSS 界面, 制作的文件管理页面

站内信

站内信
LARAVEL Notifiable Trait 搭建

系统布局

系统布局
vue-element-admin 提供的功能, 二次修改

系统异常

系统异常
获取异常后记录到DB中

致谢

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 9个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 22

先占楼,支持楼主开源

10个月前 评论
pleaseyang (楼主) 10个月前
pleaseyang (楼主) 10个月前

点赞支持

10个月前 评论
pleaseyang (楼主) 10个月前
Herbst (作者) 10个月前
pleaseyang (楼主) 10个月前

点赞

10个月前 评论
pleaseyang (楼主) 10个月前
da_house

先支持~~页面感觉 不美观! :grin:

10个月前 评论
pleaseyang (楼主) 10个月前

好是好,就是Vue的,这个前端框架都跑路了!唉

10个月前 评论
pleaseyang (楼主) 10个月前
dongzhiyu (作者) 10个月前

我的博客www.gouguoyin.cn/ 也是用的larvel+vue开发的

10个月前 评论

不错啊

10个月前 评论
pleaseyang (楼主) 10个月前

我看有人说跑路了 啥意思啊 是这个扩展包不更新了哇?

10个月前 评论
pleaseyang (楼主) 10个月前

:cow: :beer:

10个月前 评论
pleaseyang (楼主) 10个月前

file 这种写法不好吗 :pensive:

9个月前 评论

:see_no_evil:clone了框架。。。vue dev跑起来。。。admin密码都没说明下。。。

9个月前 评论
pleaseyang (楼主) 9个月前
zhaogh (作者) 9个月前

怎么感觉跟laravue是一样的

9个月前 评论
pleaseyang (楼主) 9个月前

bug反馈:当把jwt的ttl设置为1分钟后,无痛刷新token存在bug,希望作者核实一下。

操作过程:

1.设置jwt的ttl为1分钟。

2.创建刷新token的middleware,以下是刷新token的中间件代码:

<?php

namespace App\Http\Middleware;

use App\Jobs\Api\SaveLastTokenJob;

use Auth;

use Closure;

use Tymon\JWTAuth\Exceptions\JWTException;

use Tymon\JWTAuth\Exceptions\TokenInvalidException;

use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;

use Tymon\JWTAuth\Exceptions\TokenExpiredException;

use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;

class AutoRefreshToken extends BaseMiddleware{

public function handle($request, Closure $next){
    //检查此次请求中是否带有token,如果没有则抛出异常。
    $this->checkForToken($request);
    //如果格式通过,验证是否是专属于这个的token
    //获取当前守护的名称
    $current_guard = Auth::getDefaultDriver();
    //获取当前token
    $token = Auth::getToken();
    //即使过期了,也能获取到token里的载荷信息。
    $payload = Auth::manager()->getJWTProvider()->decode($token->get());
    //如果不包含guard字段或者guard所对应的值与当前的guard守护值不相同,证明是不属于当前guard守护的token
    if(empty($payload['guard']) || $payload['guard'] != $current_guard){
        throw new TokenInvalidException();
    }
    try{
        //检测用户的登录状态,如果正常则通过
        if($this->auth->parseToken()->authenticate()){
            return $next($request);
        }
        throw new UnauthorizedHttpException('jwt-auth','未登录');
    }catch(TokenExpiredException $exception){
        try{
            //刷新用户的token
            $token = $this->auth->refresh();
            //使用一次性登录以保证此次请求的成功
            Auth::onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']);
            //将token存入数据库
            $user = Auth::user();
            SaveLastTokenJob::dispatch($user,$token);
        }catch(JWTException $exception) {
            //如果捕获到此异常,即代表refresh_token也过期了,用户无法刷新令牌,需要重新登录。
            throw new UnauthorizedHttpException('jwt-auth', $exception->getMessage());
        }
    }
    //在响应头中返回新的token
    return $this->setAuthenticationHeader($next($request), $token);
}

}

存在的bug: 当token过期后,这行代码$this->auth->parseToken()->authenticate()始终抛出的是UnauthorizedHttpException的exception,导致该中间件无法捕获TokenExpiredException

期望结果: token过期,应该抛出的是TokenExpiredException

9个月前 评论

好像demo的act有些问题

8个月前 评论
pleaseyang (楼主) 8个月前
heihao (作者) 8个月前
pleaseyang (楼主) 8个月前

每个开源作者,都是伟大的开始!

8个月前 评论
pleaseyang (楼主) 8个月前

数据库也不放上去?

8个月前 评论
pleaseyang (楼主) 8个月前

功能强大,细节流畅

3个月前 评论

楼主,npm run dev之后,报这个错误

file

按照错误提示执行:npm install --save e-icon-picker/dist/index.css 还是报错,要怎么解决呢

2个月前 评论
pleaseyang (楼主) 2个月前
pleaseyang (楼主) 2个月前

file

更新了页面缓存与标签固定功能 :grin:

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!