開源項目名稱:
osframe管理系統
託管地址:
http://git.oschina.net/haizicq/osframe
主要技術:
spring mvc、spring、hibernate、angular js、seajs、bootstrap、shiro
框架介紹:
本框架是一個基礎後臺開發框架,基於springmvc+spring+hibernate搭建,前端採用angular js+sea js +bootstrap展示,基於shiro的權限管理和登錄控制。基礎框架中包含了用戶管理、權限管理等基礎模塊,提供了簡單的首頁門戶,能夠快速的實現新項目的搭建。
框架特點:
支持電腦和手機界面的自動智能切換。
技術交流羣:
330710190(OSFrame技術交流羣) 歡迎你們加入,共同探討使用過程當中的問題。前端
一、權限基本原理
權限基於shiro實現,採用註解的方式對方法標準功能權限,待發布後經過手動導入到系統中,而無需一個個功能權限的配置。而後將功能權限配置到角色上。
權限實現的目標:每一個模塊用於默認權限和管理員權限,模塊下的全部實體擁有增刪改查統一的權限控制,也能夠對模塊下單個實體設置獨立的增刪改查權限控制,還能夠設置增刪改查爲同一個權限一塊兒控制。
二、權限定義
在web層的contorller類上增長@RequiresClassAuth以及在方法上增長@RequiresAuth註解,便可實現類和方法層面的權限控制。而後再在國際化資源文件中定義好每一個權限的名稱便可。
1)@RequiresClassAuth 註解屬性詳解
common:針對基類的增刪改查採起的策略,默認是子類中前綴覆蓋
可選值:
a、RequiresClassAuth.CommonType.DEFAULT:默認類型,子類中對增刪改查分別使用不一樣的權限控制,控制方式由權限前綴rolePref加上對應的增刪改查權限,若是rolePref未指定則按默認規則生成權限:ROLE_模塊路徑_,如用戶管理模塊按這個規則生成的權限爲:ROLE_CORE_USERS_ADD(新增權限)、ROLE_CORE_USERS_EDIT(編輯權限)、ROLE_CORE_USERS_LOOK(查看權限)、ROLE_CORE_USERS_DELETE(刪除權限)
b、RequiresClassAuth.CommonType.CONTROL:整個類使用同一個權限控制,權限由role指定,如未指定則由模塊管理員權限控制
role:針對類給予的默認權限,若是方法已經設置了權限則類層面的默認權限無效
rolePref:權限前綴,用於定義自定義的權限名稱,當common選值爲CONTROL時這個設置無效
2)@RequiresAuth 註解屬性詳解
role:權限名稱,基類BaseController中的名稱只是權限後綴
seat:方法所在位置,主要用於標註基類BaseController中的方法,可選值爲:RequiresAuth.SeatType.COMMON(基類中)、RequiresAuth.SeatType.DEFAULT(默認非基類中)
type:權限的校驗類型,這事針對數據攔截權限的類型,可選值: RequiresAuth.RoleType.NONE(不作數據過濾)、 RequiresAuth.RoleType.READER(僅容許設置的可查看人員)、 RequiresAuth.RoleType.EDIT(僅容許設置的可編輯人)、 RequiresAuth.RoleType.DOWN(僅容許設置的可下載者)
returnType:方法返回類型,用於標識返回的是json仍是頁面,用途是當沒有權限時設置不一樣的返回方式供解析,以便出現問題。這裏是根據spring mvc的返回類型來設置的,可選值有:
RequiresAuth.ReturnType.DEFAULT:默認,根據返回類型智能分析返回
RequiresAuth.ReturnType.ModelAndView:spring的modelandview返回類型
RequiresAuth.ReturnType.JSON:返回json
RequiresAuth.ReturnType.String:返回字符串當有ResponseBody註解的方法會返回json,不然返回頁面路徑
id:在url中獲取id參數,用於數據攔截,默認取:id或pkId
3)國際化名稱輸入,針對每一個權限設置其.name和.info的國際化描述。
默認權限和管理員權限:這2個權限是每一個模塊基本權限,因此必須設置,不設置在導入權限會出錯,如DEMO模塊權限:
ROLE_OS_DEMO_ADMIN.name=測試模塊_管理員權限
ROLE_OS_DEMO_ADMIN.info=擁有該權限能夠對測試模塊的全部功能進行管理
ROLE_OS_DEMO_DEFAULT.name=測試模塊_默認權限
ROLE_OS_DEMO_DEFAULT.info=擁有該權限才能夠對測試模塊擁有使用權限
增刪改查權限:這個不必定必須,若是模塊全部實體設置爲統一權限控制RequiresClassAuth.CommonType.CONTROL的話,則不須要,如權限控制模塊則不須要。 不過通常仍是推薦寫上,如DEMO模塊的:
ROLE_OS_DEMO_ADD.name=測試模塊_添加權限
ROLE_OS_DEMO_DELETE.name=測試模塊_刪除權限
ROLE_OS_DEMO_LOOK.name=測試模塊_查看權限
ROLE_OS_DEMO_EDIT.name=測試模塊_編輯權限
ROLE_OS_DEMO_ADD.info=擁有該權限才能夠對用戶管理模塊進行新增
ROLE_OS_DEMO_DELETE.info=擁有該權限才能夠對測試模塊進行刪除
ROLE_OS_DEMO_LOOK.info=擁有該權限才能夠對測試模塊進行查看
ROLE_OS_DEMO_EDIT.info=擁有該權限才能夠對測試模塊進行編輯
其餘設置的權限:根據業務須要本身配置的權限,如RequiresClassAuth配置了role的,當rolePref配置的狀況,可能須要針對這個前綴將對應的增刪改查後綴的權限都設置一遍。
三、權限導入
進入權限模塊,登錄後點擊權限模塊便可。
點擊右側導航上的權限導入按鈕,就會把本身新增的權限導進來,不會重複的導入。git
四、權限管理
進入權限模塊,登錄後點擊權限模塊便可。
1)建立角色分組
點擊導航上的管理按鈕,根據須要建立角色組。建立後刷新下頁面會看到角色下方增長了剛剛配置的角色組。
2)建立角色和權限受權
點擊剛剛配置的角色組,右側會展現角色組下的角色列表,點擊新建建立角色,建立角色的時候直接能夠設置權限和受權人員web