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群是需要收費的,費用不高)
小結:
今天僅僅只是一個背景介紹,接下來會有對應的簡單實戰,你可以理解為簡單的又淺入深(當然了,不是那種深入到源碼分析的那種),是由淺度使用到深度使用。希望能對大家有一定的幫助。