【建议收藏】毕设/私活/兼职大佬必备,一个挣钱的开源【SpringBoot+Spring Security+MyBatis Plus】脚手架

5,038 阅读7分钟

前言:

      前段时间也和大家分享了一个关于Springboot+vue的前后端分享的脚手架、最近刚好有同学找到我叫我帮他做一个简单的酒庄管理系统、于是就找到个这个开源框架来试试看、这是个什么项目呢,它就是是集SpringBoot、MyBatis、Shiro于一体的标准项目框架、让我们解放双手 ✋ 从现在开始看一下吧。不管是用来学习技术还是接私活/毕设/兼职挣钱、都是非常不错的哟、建议大家收藏起来、文末我把源码给大家。

        这岂不是太简单了 分分钟就能做好的吗、哈哈、不说废话了、今天就给大家演示一下利用一个开源框架写一个吧

这个开源项目主要特点:

  • 这个框架采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,也非常注重安全性,为自己做学习使用以及简单企业系统都是可以的,让我们的开发变得很简单。
  • 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求、根据管理员灵活控制权限
  • 完善的部门管理及数据权限,通过注解实现数据权限的控制、具体到前端后代码
  • 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
  • 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库
  • 后期推荐进行云服务器进行部署项目

内置功能模板:

用户管理:用户是系统操作者,该功能主要完成系统用户配置。
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
岗位管理:配置系统用户所属担任职务。
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
参数管理:对系统动态配置常用参数。
通知公告:系统通知公告信息发布维护。
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
登录日志:系统登录日志记录查询包含登录异常。
在线用户:当前系统中活跃用户状态监控。
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
系统接口:根据业务代码自动生成相关的api接口文档。
服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
缓存监控:对系统的缓存信息查询,命令统计等。
在线构建器:拖动表单元素生成相应的HTML代码。
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

项目介绍:

 项目实际分为4个模块:

  • renren-common为公共模块,其他模块以jar包的形式引入进去,主要提供些工具类,以及renren-admin、renren-api模块公共的entity、mapper、dao、service服务,防止一个功能重复多次编写代码。
  • renren-admin为后台模块,也是系统的核心,用来开发后台管理系统,可以打包成jar,部署到服务器上运行,或者打包成war,放到Tomcat8.5+容器里运行。
  • renren-api为接口模块,主要是简化APP开发,如:为微信小程序、IOS、Android提供接口,拥有一套单独的用户体系,没有与renren-admin用户表共用,因为renren-admin用户表里存放的是企业内部人员账号,具有后台管理员权限,可以登录后台管理系统,而renren-api用户表里存放的是我们的真实用户,不具备登录后台管理系统的权限。renren-api主要是实现了用户注册、登录、接口权限认证、获取登录用户等功能,为APP接口的安全调用,提供一套优雅的解决方案,从而简化APP接口开发。
  • renren-generator为代码生成器模块,只需在MySQL数据库里,创建好表结构,就可以生成新增、修改、删除、查询、导出等操作的代码,包括entity、mapper、dao、service、controller、页面等所有代码,项目开发神器。

这边由于我个人没有用到api/微信小程序、IOS、Android提供接口的业务以及generator代码生成器模块 、所以可以根据实际情况删除和添加模块

本地部署项目:

下载地址:

git clone https://gitee.com/renrenio/renren-security.git

  • 环境要求JDK1.8、Tomcat8.5+、MySQL5.5+
  • 通过git,下载renren-security源码,如下:

  • 创建数据库 renren_security ,数据库编码为 UTF-8
  • 执行数据库脚本,如MySQL数据库,则执行 db/mysql.sql 文件,初始化数据
  • 修改application-dev.yml,更改数据库账号和密码
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/renren-chateau?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: 123456
      initial-size: 10
      max-active: 100
      min-idle: 10
      max-wait: 60000
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      #Oracle需要打开注释
      #validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        #login-username: admin
        #login-password: admin
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: false
        wall:
          config:
            multi-statement-allow: true


##多数据源的配置,需要引用renren-dynamic-datasource
#dynamic:
#  datasource:
#    slave1:
#      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#      url: jdbc:sqlserver://localhost:1433;DatabaseName=renren_security
#      username: sa
#      password: 123456
#    slave2:
#      driver-class-name: org.postgresql.Driver
#      url: jdbc:postgresql://localhost:5432/renren_security
#      username: renren
#      password: 123456

 设置拦截放行:

静态资源文件以及登录和swagger-ui接口文档等设置放行

@Bean("shiroFilter")
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
        shiroFilter.setSecurityManager(securityManager);
        shiroFilter.setLoginUrl("/login.html");
        shiroFilter.setUnauthorizedUrl("/");

        Map<String, String> filterMap = new LinkedHashMap<>();
        filterMap.put("/swagger/**", "anon");
        filterMap.put("/v2/api-docs", "anon");
        filterMap.put("/swagger-ui.html", "anon");
        filterMap.put("/webjars/**", "anon");
        filterMap.put("/swagger-resources/**", "anon");

        filterMap.put("/statics/**", "anon");
        filterMap.put("/login.html", "anon");
        filterMap.put("/sys/login", "anon");
        filterMap.put("/favicon.ico", "anon");
        filterMap.put("/captcha.jpg", "anon");

        filterMap.put("/**", "authc");
        shiroFilter.setFilterChainDefinitionMap(filterMap);

        return shiroFilter;
    }

项目启动: 

这是稍微经过改造之后的样子

改造前:

输入图片说明

改造后:

加一些业务表和删除隐藏掉一些不必要的功能模块

 核心技术:

SpringBoot框架
Spring Boot是一款开箱即用框架,提供各种默认配置来简化项目配置。让我们的Spring应用变的更轻量化、更快的入门。 在主程序执行main函数就可以运行。你也可以打包你的应用为jar并通过使用java -jar来运行你的Web应用。它遵循"约定优先于配置"的原则, 使用SpringBoot只需很少的配置,大部分的时候直接使用默认的配置即可。同时可以与Spring Cloud的微服务无缝结合。

Spring Boot2.x版本环境要求必须是jdk8或以上版本,服务器Tomcat8或以上版本

优点

  • 使编码变得简单: 推荐使用注解。
  • 使配置变得简单: 自动配置、快速集成新技术能力 没有冗余代码生成和XML配置的要求
  • 使部署变得简单: 内嵌Tomcat、Jetty、Undertow等web容器,无需以war包形式部署
  • 使监控变得简单: 提供运行时的应用监控
  • 使集成变得简单: 对主流开发框架的无配置集成。
  • 使开发变得简单: 极大地提高了开发快速构建项目、部署效率。

Spring Security安全控制

1、介绍
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

2、功能
Authentication 认证,就是用户登录
Authorization 授权,判断用户拥有什么权限,可以访问什么资源
安全防护,跨站脚本攻击,session攻击等
非常容易结合Spring进行使用

3、Spring SecurityShiro的区别

相同点

1、认证功能  2、授权功能  3、加密功能
4、会话管理  5、缓存支持  6、rememberMe功能

不同点

优点:

1、Spring Security基于Spring开发,项目如果使用Spring作为基础,配合Spring Security做权限更加方便。而Shiro需要和Spring进行整合开发
2、Spring Security功能比Shiro更加丰富,例如安全防护方面
3、Spring Security社区资源相对比Shiro更加丰富

缺点:

1)Shiro的配置和使用比较简单,Spring Security上手复杂些
2)Shiro依赖性低,不需要依赖任何框架和容器,可以独立运行。Spring Security依赖Spring容器

今天推荐这个SpringBoot开源项目还是比较不错的、项目是快速开发脚手架,代码质量各方面的也还不错、适合用来做自己学习技术或者或自己兼职私活接单都是可以的哟、喜欢的朋友点一个一健三联支持下哟