权限设计

1、  库的设计:建立五张表,权限表、用户表、角色表、角色权限表、用户角色表

2、页面的设计:在页面菜单上的权限管理中包括用户管理(用户的增、删、改、查)与角色管理(角色的增、删、改、查).

在系统开始使用时,肯定要用一个默认的系统用户在页面进行配置(也就是在库中存在一个用户,用户具有“超级管理员”角色,这个角色包含这个系统中的所有权限)。


系统在初始化时权限表中包含你的所有的要控制用户显示的项的一个对应值。

首先,先创建你想要的角色,在页面上可以用JS脚本生成一棵树,这棵树的每一个节点就是通过树节点的复选框可以为当前新增的角色选择你想设定的权限,这样你新建一个角色保存时,就会将这个角色的信息存入角色表中,同时将角色与所选的权限的关系放入角色权限表中。

其次,在用户管理项中,新建一个用户,为这个用户选择一个之前建立的角色,这样就可以将其保存到用户表中,同时将用户与角色的关系放到用户角色表中。

3、逻辑设计:当一个用户登陆时,校验用户的身份的时候,若是该用户存在,可以将这个用户所具有的权限查出来(通过用户与角色、角色与权限的对应关系来处理),放入session中(不要怕往session中入东西,不会太多),这样当用户登陆以后,点击每一个可以判断session中有没有这个点击所对应的权限,若是没有就提示“没有权限”,也可以通过直接对用户所具有的权限,在页面的层次上就将功能屏敝,也就是说用户没有的权限,在页面上根本就不显示。

 

做权限我是这样的思路:
1.
建立数据库表,里面有5个字段一个事角色的id号,也就是你说的用户超级管理员 
管理员 和 普通用户这些角色的一个标识。

2.
当用户登录的时候,能够获得登录用户的id号,相应的也可以获得它的权限值,比方说是超级管理员。
然后根据不同的权限显示不同的功能,假如他是一般管理员,他没有修改用户资料的权限,就让那个按钮变灰,也就是不可用。
3.
应该注意这样一个问题,当某个用户没有登录的时候,他直接输入修改用户资料的网址,如http://localhost:8080/project/modify.jsp 不应该显示该页面的内容,也就是说此时应该显示一个页面,提示信息为你还没有登录,我做这个功能时是用filter过滤的。关于filter的用法,你可以网上搜一下很多。
另外想说明的是,你也可以用springaop进行权限控制。如果楼主还有什么不明白的话可以给我发邮件,邮箱:smiling_boy@126.com

 

没有实例就是想的,这么说吧,你的目的就是想划分出级别来,而这个级别是在你登陆的时候就体现出来的,那么你登陆的时候肯定是要通过查询来获得你当前用户的权限,这个权限的制定是在什么时候呢?那肯定是有人给予他的。
最高级的超级管理员,没人给他怎么办,只好在系统初始化的时候就在用户表中建立这么一个用户,所以用户表是肯定要有的(其实你之前的登陆也是要用到这张表的),但是怎么来知道这个用户有那些权限呢??
那就一定要有一个关联,这样由于权限是多项的而用户表中对一个用户存放多个权限是十分不好的(各尽其职),于是就产生了角色表,让一个用户与一个角色对应就产生了用户角色表,而让一个角色再与很多权限对应就产生了角色权限表,而对于所有的权限当然也要划分成一个权限表,这样对表的设计就完成了,有了表的结构。
而对于之前的用户有那些权限,那么这些权限一定是要在界面上由超级管理员来设定的,也就是由他来创建具有不同权限的角色,在新建立用户,为用户分配相应的角色,从而使不同的人有不同的权限,而之所以要放在session中,是因为你的每一次点击都要判断是否有权限,与其每一次都去查库还不如第一次放入session中,然后用到的时候再取就可以了。

你只能仔细想一下了,没有实例,没办法展示,我就是想出来的

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值