基于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 协议》,转载必须注明作者和本文链接
本帖由系统于 7个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18

先占楼,支持楼主开源

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

点赞支持

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

点赞

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

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

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

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

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

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

7个月前 评论

不错啊

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

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

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

:cow: :beer:

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

file 这种写法不好吗 :pensive:

7个月前 评论

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

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

怎么感觉跟laravue是一样的

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

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

6个月前 评论

好像demo的act有些问题

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

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

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

数据库也不放上去?

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

功能强大,细节流畅

1个月前 评论

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