權限系統(tǒng)的操作流程:
用戶和角色之間: 多對多關系
一個用戶可以擁有多個角色,
一個角色可以賦給多個用戶.
角色和權限之間:多對多關系
一個角色可以擁有多個權限,
一個權限可以賦給多個角色.
權限表達式:ssh.web.action.EmployeeAction:delete從而何來.
自定義一個注解標簽:RequiredPermission,用來貼在Action類中需要權限才能訪問的方法上.
使用注解:
加載權限操作:
1):掃描BaseAction的所有子類.
2):獲取每一個Action類中的所有方法.
3):并判斷Action的方法上是否存在RequiredPermission注解,如果存在,獲取該注解對象.
4):每次遇見RequiredPermission的方法,都創(chuàng)建出Permission對象,并設置Permission對象中的name和expression.
name屬性: 獲取RequiredPermission注解的value屬性設置.
expression屬性:得到當前方法所在類的全限定名:方法名稱.
5):調用permissionDAO.save(權限對象);
操作一個功能,如刪除員工:
1):登陸系統(tǒng):
1):把登陸信息存儲到session中.
2):查詢出當前登陸用戶所有的權限表達式,并存儲到session中.
2):操作具體的某一個功能.
1):判斷當前登陸用戶是否是超級管理員,若是直接放行,否則GOTO 2.
2):判斷當前請求的Action方法上是否存在,RequiredPermission標簽,如果沒有(不需要權限),直接放行,否則GOTO 3.
3):獲取當前請求Action方法對應的權限表達式:ssh.web.action.EmployeeAction:delete.
4):s.
存在: 直接放行