一部優秀的權限系統AuthManage

auth manage

這是一個統一管理系統權限,設計的目標是給開發者一個完整地權限管理系統,以便你能更專一本身系統業務的開發html

特色

  1. 統一配置界面java

  2. 簡潔的客戶端SDK包git

  3. 支持不一樣平臺,不一樣語言github

  4. 易擴展web

  5. 粒度隨意掌控,可大可小spring

  6. 支持spring數據庫

項目文檔

最新更新

2015-08-08

  1. auth sdk 與 auth center 通訊增長祕鑰緩存

  2. 優化安裝過程,系統第一次啓動安裝時添加超級管理員,沒必要在手動添加

  3. 修復安裝腳本run.sh

  4. 新增2.0分支,該分支將會增長更細粒度的權限控制,可讓你在方法內部獲取更爲精細的數據控制,目前正處於開發中

  5. 新增QQ交流羣:365133362

  6. 因爲我的精力有限,更新功能還未更新到項目文檔,請開發者見諒

這次更新,演示項目example可能會受到影響,請注意

安裝與運行

  1. 運行以前請先安裝maven和git

  2. 將代碼clone到本地後,須要先修改./auth-web/src/man/filters/dev.properties,配置你本身的數據庫鏈接

  3. 執行sh run.sh,成功啓動後訪問 http://localhost:8888,若是看到登錄頁面,說明程序啓動成功

  4. 關於登錄帳號,請繼續向下看數據庫建立

數據庫建立

當程序第一次成功啓動後,會自動在你配置的數據庫中建立數據表,你須要administrator表添加一對帳號和密碼
做爲你當前的登錄帳號,如今一個完整地權限中心已經運行起來了,接下來請看客戶端SDK的介紹

客戶端開發

加入依賴:
<groupId>com.peaceful</groupId>
<artifactId>nuggets-auth-sdk</artifactId>
<version>1.0-SNAPSHOT</version>
auth.properties 配置
#客戶端在服務中心註冊id
#當客戶端引入sdk包時,須要如今權限中心->添加系統,註冊服務,成功後會爲該客戶端生成一個惟一id,標識你的系統;
auth.app.id=1
# 客戶端appkey
auth.appkey=1260b2a09f140f4731f19099e1d70f50
# 客戶端secret
auth.secret=2cf102c4e929fa2476fd0e94f924c08b
#權限中心地址
#sdk包與權限中心創建鏈接,須要知道權限中心的位置
auth.service.address=http://10.10.1.110:8080
#user info 緩存時間
#第一次經過getUser()獲取用戶權限信息時,會把配置信息緩存在客戶端的服務器,以後會在緩存中獲取
#若是緩存失效,會再次請求權限中心
auth.user.session.out.time=2
#system info 緩存時間 ,目的同上
auth.system.session.out.time=300
#實現AuthContext抽象類的路徑
#這個是可選配置,只有當你引入auth-spring包時纔會使用到這個配置,
#當服務啓動時會實例化指定包路徑類的對象,而後sdk將經過AuthContext實例拿取一些必要的上下文信息,好比每次請求用戶名是什麼
auth.context.impl.class=xxx
得到服務
AuthService authService = AuthServiceImpl.getAuthService();
#這是經過sdk包與權限中心創建服務的惟一入口,當啓動後,sdk會讀取auth.properties去服務中心校驗是否註冊服務
#若是存在註冊信息將返回一個可用的服務實例,不然將會拋出未在權限中心註冊服務異常
兩個主要服務接口

getSystem() 得到客戶端在權限中心註冊的全部配置信息

getUser(String email) 得到客指定用戶的全部配置信息

有了這兩個接口你就能夠很方便的進行擴展,由於經過這兩個接口你拿到的基本上是全部配置信息,此外,不要擔憂性能問題,由於經過這兩個接口拿到的
數據會緩存在客戶端的服務器,你也不必擔憂緩存數據過期問題,由於客戶端會實時監測服務中心數據配置的變化,如有變化,客戶端會當即從新加載緩存

擴展

當前sdk的包只發行了java版本,該版本除了依賴Ehcache包爲了實現客戶端的緩存外,不依賴任何第三方包,因此只要
你當前的開發語言能夠和java語言相互調用就可適用於用你的系統,好比當前咱們正把sdk包用與spring編寫
的項目和scala編寫的項目當中,實際運行中表現很是穩定。但因爲各個客戶端的或者各個公司平臺的差別性,
可能須要你做出一些必要的擴展,目的是保證sdk包能夠適用於更多的架構同時也保證大家在基於sdk包進行開發時
能夠簡單方便的去擴展.當前提供的auth-spring包只是一個擴展的列子,它是適用於spring mvc架構的項目,擴展主要
內容是客戶端能夠經過springmvc HandlerInterceptorAdapter 攔截用戶請求,而後經過檢查controller上的註解
決定動做的執行方向,另外,還針對視圖是jsp頁面的寫了一個jstl文件,當頁面經過jstl拿取菜單時,會先經過authContext(
這須要客戶端本身實現authContext接口)拿到當前用戶身份,根據用戶身份渲染不一樣的菜單

客戶端支持jstl表達式

下面是一個樣例,會根據客戶端系統的當前登陸是否在頁面渲染menuKey=goods的按鈕,按鈕的樣式是bootstrap3.3版本定義,這須要根據你本身的系統
具體定製,具體樣例參照類 MenuUtils

<%@taglib uri="http://com.peacuful.com/auth/menu" prefix="menu" %>
<menu:menu menuKey="goods" menuLevel="L1"/>

客戶端支持註解配置

下面是一個樣例,會根據客戶端系統的當前登陸用戶決定是否能夠請求addMeta controller

@AUTH.Function({"goods,mall"})
@AUTH.Role("admin")
@RequestMapping(value = "/item/xxx", method = {RequestMethod.POST})
public void addMeta(HttpServletRequest request, HttpServletResponse response) {

    ...

}

開發樣例

可參考demo項目 example

交流

QQ羣:365133362

相關文章
相關標籤/搜索