【开源项目学习】wetech-admin(企业RBAC管理平台)(更新中)

1、开源项目源码地址

https://github.com/cjbi/wetech-admin

2、项目概述

简述:

wetech-admin是基于Spring Boot 2.0 + Mybatis-ext + shiro + Vue 的轻量级后台管理系统,适用于中小型项目的管理后台,支持按钮级别的权限控制,系统具有最基本的用户管理、角色管理、权限管理等通用性功能,企业或个人可直接在此基础上进行开发,扩展,添加各自的需求和业务功能。

界面介绍:

主要包含登录界面主页监控大盘用户管理界面个人管理界面
介绍1
介绍2

3、项目文件结构

项目结构1
该项目是前后端分离项目,但后端服务模块和前端服务模块放在同一个父模块下,本次学习主要学习后端服务部分。wetech-admin-server整体结构如下图:
项目结构2
可见基本还是遵循controller + service + mapper + util + 各种POJO的形式设计后端模块,在此基础上增加的特定功能的支持,那么我们从上到下依依介绍:

aspect

切面类,这里主要是为了日志打印时增加提示,显示调用哪个接口以及计算执行所花时间,并且可以通过在接口添加自定义注解“@LogIgnore”来忽略部分接口。
切面类

controller

控制层,定义了后端服务的各种API入口,该项目主要包含5种API:
indexController:当前用户的界面和操作按钮管理。
LoginController:登录和注销API
PermissionController:权限管理
RoleController:角色管理
UserController:用户管理

event

事件监听器设置(待补充)

exception

自定义异常类(待补充)

mapper

DAO层,分别执行用户、角色、权限数据的CRUD操作。

model

各种实体的定义

service

service层,处理用户、角色、权限的逻辑控制外,还包含一些工具类

shiro

权限管理框架的设置和自定义。

swagger

api文档界面的配置

util

工具类

WebConfig:

WetechAdminApplication:

4、数据库表分析

数据库表比较简单,一共就三张表:
数据库表

5、项目亮点

1、使用shiro框架处理权限问题

一个轻量级权限管理框架,通过简单的注释即可实现各API接口的权限判断。

2、使用mybatis-ext实现DAO层功能

在接触这个项目前本人并没有听说过mybatis-ext这个工具,但看项目源码中的api调用方式跟MP非常相似,搜索了一番发现mybatis-ext这个工具非常冷门几乎没什么人用,为什么作者会用这个冷门的工具呢?然后我又看了一下mybatis-ext的源码地址,哦原来mybatis-ext是本开源项目的作者写的啊,那没事了。
mybatis-ext的api调用方式非常像MP(有谁知道MP和mybatis-ext的关系吗…),基本没什么可说的,为了方便以后扩展,最好还是改成MP来实现DAO层吧。

3、项目API严格遵守Restful风格

浏览一遍该项目的api接口写法,几乎所有的api接口路径都遵循“尽可能简短,不包含动词”的原则,这一点值得学习。
项目亮点1

6、项目问题分析

问题1:

直接访问后台任意路径,出现1002错误
1002错误

解决1:

由于设置了JWT过滤,所有请求都会判断其头部是否携带Access-Token这一项,若为空或是非法token都会返回1002错误。因此,每次请求都需要在header加上Access-Token这一项,并赋予合法的token值。
解决1-1
解决1-2

问题2:

postman直接访问/auth/login路径,body填入默认账号密码,出现1003错误
1003错误1003message

解决2:

查看登录的controller api发现,参数前加入了@RequestBody注解,意味着请求体参数必须是json格式。所以将Content-Type设置为application/json,参数采用raw形式的json串。
分析解决2
分析解决22

问题3:

抛出的自定义异常均未做处理,仅在后台打印日志

问题4:

目前给账号user1分配新增的角色role1,然后登录user1账号,会出现404错误,导致无法访问所有网页。

解决4:

分析
前端的菜单权限分配有问题,账号管理页面的展示不受权限限制,且其他页面在没有权限访问时,会直接显示404,体验差(比如,如果当前账号没有查看dashboard页面的权限,则登录成功后,会直接显示404页面)。
由于主要问题出在前端(后端的返回数据正常),解决方法研究中。
临时解决方案:在数据库中手动修改用户user1的角色,删除role1,刷新网页。或者等到user1的登录失效后,用未分配role1的账号重新登录。

7、二次开发(开发中)

完善swagger说明

将DAO层框架mybatis-ext替换为mybatis plus(已完成)

mybatis plus的api接口与mybatis-ext类似,具体可以参考mybatisplus官网和源码注释,不多做介绍了。

将权限管理框架Shiro替换为spring security oauth2

处理项目中出现的警告

调整项目结构

调整日志打印文本

增加网关过滤请求

源码地址:

gitee
github

8、总结

  • 第一次用CSDN上的MD编辑器写文章,还是挺好用的,MD格式便于CV和保存到各个平台,推荐一手。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值