赞
踩
https://github.com/cjbi/wetech-admin
wetech-admin是基于Spring Boot 2.0 + Mybatis-ext + shiro + Vue 的轻量级后台管理系统,适用于中小型项目的管理后台,支持按钮级别的权限控制,系统具有最基本的用户管理、角色管理、权限管理等通用性功能,企业或个人可直接在此基础上进行开发,扩展,添加各自的需求和业务功能。
主要包含登录界面、主页监控大盘、用户管理界面和个人管理界面
该项目是前后端分离项目,但后端服务模块和前端服务模块放在同一个父模块下,本次学习主要学习后端服务部分。wetech-admin-server整体结构如下图:
可见基本还是遵循controller + service + mapper + util + 各种POJO的形式设计后端模块,在此基础上增加的特定功能的支持,那么我们从上到下依依介绍:
切面类,这里主要是为了日志打印时增加提示,显示调用哪个接口以及计算执行所花时间,并且可以通过在接口添加自定义注解“@LogIgnore”来忽略部分接口。
控制层,定义了后端服务的各种API入口,该项目主要包含5种API:
indexController:当前用户的界面和操作按钮管理。
LoginController:登录和注销API
PermissionController:权限管理
RoleController:角色管理
UserController:用户管理
事件监听器设置(待补充)
自定义异常类(待补充)
DAO层,分别执行用户、角色、权限数据的CRUD操作。
各种实体的定义
service层,处理用户、角色、权限的逻辑控制外,还包含一些工具类
权限管理框架的设置和自定义。
api文档界面的配置
工具类
数据库表比较简单,一共就三张表:
一个轻量级权限管理框架,通过简单的注释即可实现各API接口的权限判断。
在接触这个项目前本人并没有听说过mybatis-ext这个工具,但看项目源码中的api调用方式跟MP非常相似,搜索了一番发现mybatis-ext这个工具非常冷门几乎没什么人用,为什么作者会用这个冷门的工具呢?然后我又看了一下mybatis-ext的源码地址,哦原来mybatis-ext是本开源项目的作者写的啊,那没事了。
mybatis-ext的api调用方式非常像MP(有谁知道MP和mybatis-ext的关系吗…),基本没什么可说的,为了方便以后扩展,最好还是改成MP来实现DAO层吧。
浏览一遍该项目的api接口写法,几乎所有的api接口路径都遵循“尽可能简短,不包含动词”的原则,这一点值得学习。
直接访问后台任意路径,出现1002错误
由于设置了JWT过滤,所有请求都会判断其头部是否携带Access-Token这一项,若为空或是非法token都会返回1002错误。因此,每次请求都需要在header加上Access-Token这一项,并赋予合法的token值。
postman直接访问/auth/login路径,body填入默认账号密码,出现1003错误
查看登录的controller api发现,参数前加入了@RequestBody注解,意味着请求体参数必须是json格式。所以将Content-Type设置为application/json,参数采用raw形式的json串。
抛出的自定义异常均未做处理,仅在后台打印日志
目前给账号user1分配新增的角色role1,然后登录user1账号,会出现404错误,导致无法访问所有网页。
分析:
前端的菜单权限分配有问题,账号管理页面的展示不受权限限制,且其他页面在没有权限访问时,会直接显示404,体验差(比如,如果当前账号没有查看dashboard页面的权限,则登录成功后,会直接显示404页面)。
由于主要问题出在前端(后端的返回数据正常),解决方法研究中。
临时解决方案:在数据库中手动修改用户user1的角色,删除role1,刷新网页。或者等到user1的登录失效后,用未分配role1的账号重新登录。
mybatis plus的api接口与mybatis-ext类似,具体可以参考mybatisplus官网和源码注释,不多做介绍了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。