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)
    }
}

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