Grails構建基於RBAC的權限管理平臺(二)

Grails框架是標準的MVC模式。通過控制器(Controller)的閉包(action)控制相應的操作和頁面(GSP)渲染。
Grails編程是基於模型驅動的。根據Grails的特點,要實現基於RBAC的權限管理需要定義以下4個數據模型。
Grails目前最新版本是 2.2.3,對many to many的關係映射提供了良好的支持。 
  • 用戶模型(User)包括用戶標識(user_id)、用戶姓名(userName)、用戶登錄密碼(password)。與角色模型是多對多的關係。
  • 角色模型(Role)包括角色標識(role_id)、角色名稱(roleName)。與用戶模型是多對多的關係。與授權模型也是多對多的關係。
  • 授權模型(Authorization)包括授權標識(auth_id)、授權名稱(authName)。與角色模型是多對多的關係。與操作模型是一對一的關係。
  • 操作模型(Operation)包括操作標識(oper_id)、操作名稱(operName)、控制器名稱(controller)、動作名稱(action)。與授權模型是一對一的關係。
package rbac
class User {
String username
String password
static belongsTo = Role
static hasMany = [roles:Role]
String toString(){
"${username}"
}
static constraints = {
username blank:false
password blank:false,password:true
    }
}
/**************************************************************************/
package rbac
class Role {
String roleName
static belongsTo = Auth
static hasMany = [users:User,auths:Auth]
String toString(){
"${roleName}"
}
    static constraints = {
roleName(blank:false)
    }
}
/**************************************************************************/
package rbac
class Auth {
String authName
Oper opers
static hasMany = [roles:Role]
String toString(){
"${authName}"
}
static constraints = {
authName blank:false
    }
}
/**************************************************************************/
package rbac
class Oper {
String operName
String controllerName
String actionName
static belongsTo = [auths:Auth]
String toString(){
"${operName}"
}
static constraints = {
operName(blank:false)
controllerName(blank:false)
actionName(blank:false)
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章