我做的几个管理系统,都需要权限管理来控制页面访问、控制相关操作。本文总结一下,并和大家讨论讨论。
权限部分主要有这几个概念:角色( role )、用户( user )、页面( page )、页面组( page group ) 。用户只有一个角色,角色包括一个或多个页面,页面可以属于多个角色,页面都在某一个页面组里,页面按照功能来分组比如客服组、报表统计组。页面组主要是为了方便显示设计的,像那种树形菜单如果都显示出来会超出屏幕。
用户登入系统后,就通过其角色加载所有可以访问的页面,保存到 Session, 一直到用户退出系统或者 session 过期。用户访问页面时,添加一个 Dispatcher ( tapestry5 方式),在这个 Dispatcher 中解析出页面地址如 /cs/deposit ,和用户保存在 Session 里的可访问页面作比较,如果存在则继续,不存在则跳到登入页面。
这种方式主要是通过控制页面访问来达到权限控制的,如果一个页面包括了多个操作的话,就都可以访问,粒度不够细。目前还没有好的解决办法,不知道有什么好的设计方法?