人人开源之renren-security
renren-security,从这周开始我将要对其比较详细的研究,之前的研究只不过是比较浅的。正如在这篇文章读读《编写高质量代码:改善Java程序的151条建议》中说过不要重复造轮子。
renren-security虽然源代码对外开放,但是目前相关的详细文档还是需要付费。但是我个人觉得付费也行,不付费也行。对于目前时间相对比较富足。我觉得它的技术架构就是我们Java的那一套,本质上并不会有多么大的变化。我觉得有必要锻炼下自我的解决问题和学习能力。由此,我决定对其开始研究。为期时间为一天。一天为24小时。工作日也就八个小时到九个小时左右。工作日的时间,不是特别够,因为我还得梳理最近的项目整个架构,比如如果在扩展会怎么样和整个流程的逻辑合理性还有待验证,这对于我和我的技术团队成员来说是一件大事,主要是优先级。但是开源项目优先级其实也不低。按照我们经理的构想,再开发一套类似的系统,应当是非常快的完成,而不是我们Java团队花了整整两个月或三个月才完成。所以我们需要借助一个有效的开源框架帮助我们提升开发效率。
如下关于项目说明、特点、数据权限设计思想、项目结构、技术选型、软件需求、本地部署、分布式部署、项目演示、如何交流反馈贡献等内容,均来自该地址:https://gitee.com/renrenio/renren-security
之所以列举出来,是想比较详细的阐述一点:在学习一项开源技术时,最好还是对于的背景还是要多少了解和熟悉,因为对于你在接下来的学习中或者是解决某些问题是有一定的帮助的。
起码一点,你至少清楚一点,这些技术栈你多少精通、用过、熟悉、了解过、听过等等。
项目说明
- 采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。
- 提供了代码生成器,只需编写30%左右代码,其余的代码交给系统自动生成,可快速完成开发任务
- 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库
具有如下特点
- 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求
- 完善的部门管理及数据权限,通过注解实现数据权限的控制
- 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
- 支持分布式部署,session存储在redis中
- 友好的代码结构及注释,便于阅读及二次开发
- 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
- 页面交互使用Vue2.x,极大的提高了开发效率
- 引入swagger文档支持,方便编写API接口文档
数据权限设计思想
- 管理员管理、角色管理、部门管理,可操作本部门及子部门数据
- 菜单管理、定时任务、参数管理、字典管理、系统日志,没有数据权限
- 业务功能,按照用户数据权限,查询、操作数据【没有本部门数据权限,也能查询本人数据】
项目结构
renren-security
├─renren-common 公共模块
│
├─renren-admin 管理后台
│ ├─db 数据库SQL脚本
│ │
│ ├─modules 模块
│ │ ├─job 定时任务
│ │ ├─oss 文件存储
│ │ └─sys 系统管理(核心)
│ │
│ └─resources
│ ├─mapper MyBatis文件
│ ├─statics 静态资源
│ ├─template 系统页面
│ │ ├─modules 模块页面
│ │ ├─index.html AdminLTE主题风格(默认主题)
│ │ └─index1.html Layui主题风格
│ └─application.yml 全局配置文件
│
│
├─renren-api API服务
│
├─renren-generator 代码生成器
│ └─resources
│ ├─mapper MyBatis文件
│ ├─template 代码生成器模板(可增加或修改相应模板)
│ ├─application.yml 全局配置文件
│ └─generator.properties 代码生成器,配置文件
│
技术选型:
- 核心框架:Spring Boot 2.0
- 安全框架:Apache Shiro 1.4
- 视图框架:Spring MVC 5.0
- 持久层框架:MyBatis 3.3
- 定时器:Quartz 2.3
- 数据库连接池:Druid 1.1
- 日志管理:SLF4J 1.7、Log4j
- 页面交互:Vue2.x
软件需求
- JDK1.8
- MySQL5.5+
- Maven3.0+
本地部署
- 通过git下载源码
- 创建数据库renren_security,数据库编码为UTF-8
- 执行db/mysql.sql文件,初始化数据【按需导入表结构及数据】
- 修改application-dev.yml文件,更新MySQL账号和密码
- 在renren-security目录下,执行mvn clean install
- Eclipse、IDEA运行AdminApplication.java,则可启动项目【renren-admin】
- renren-admin访问路径:http://localhost:8080/renren-admin
- swagger文档路径:http://localhost:8080/renren-admin/swagger/index.html
- 账号密码:admin/admin
- Eclipse、IDEA运行ApiApplication.java,则可启动项目【renren-api】
- renren-api访问路径:http://localhost:8081/renren-api/swagger-ui.html
- Eclipse、IDEA运行GeneratorApplication.java,则可启动项目【renren-generator】
- renren-generator访问路径:http://localhost:8082/renren-generator
分布式部署
- 分布式部署,需要安装redis,并配置config.properties里的redis信息
- 需要配置【renren.redis.open=true】,表示开启redis缓存
- 需要配置【renren.shiro.redis=true】,表示把shiro session存到redis里
项目演示
- 演示地址:http://demo.open.renren.io/renren-security
- 账号密码:admin/admin
如何交流、反馈、参与贡献?
- 开发文档:http://www.renren.io/guide/security
- 官方社区:http://www.renren.io/community
- gitee仓库:https://gitee.com/renrenio/renren-security
- github仓库:https://github.com/renrenio/renren-security人人开源:http://www.renren.io
- 官方QQ群:324780204、145799952(进入QQ群是需要收费的,费用不高)
小结:
今天仅仅只是一个背景介绍,接下来会有对应的简单实战,你可以理解为简单的又浅入深(当然了,不是那种深入到源码分析的那种),是由浅度使用到深度使用。希望能对大家有一定的帮助。