基于laravel+vue的基础后台

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

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 协议》,转载必须注明作者和本文链接
本帖由系统于 4周前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 14

先占楼,支持楼主开源

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

点赞支持

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

点赞

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

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

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

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

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

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

1个月前 评论

不错啊

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

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

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

:cow: :beer:

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

file 这种写法不好吗 :pensive:

3周前 评论

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

3周前 评论
pleaseyang (楼主) 3周前
zhaogh (作者) 3周前

怎么感觉跟laravue是一样的

3周前 评论
pleaseyang (楼主) 3周前

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

2周前 评论

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