[搬家前]AccessController类作用

AccessController层,Filter,用来判断页面的合法性。

由于有很多不同的用户类型(adminusersadminusersuser等),不同的用户类型,有不同的权限,所以,需要有一个控制他们访问权限的机制。在新项目里就是通过AccessController。它是扩展自javax.servlet.filter。至于filter的详细介绍,可以参考http://javafilter.jiaogen.com/。简单地说,它对页面的requestresponse进行处理,所以,可以完成诸如权限控制等的限制,页面或action。(事实上,jsp页面和action可以同等看待,因为jsp页面的具体实现,也是把它转换为具体的servlet。这样,可以使用统一的放来操作,方便执行。)

在新项目里,一共有如下的几个表来控制访问的权限:UserRoleUser_RoleRescRole_RescUser里面,是用户的信息,包括用户的id、名字等。Role里面,是各种用户类型的列表。User_Role,指明一个用户对应的角色(多一个表,可以一个用户对应对中角色)。Resc,用一个Id,来表示某一个jsp页面或动作(如:1 /user/login.jsp ; 2 /user/login.action)。Role_Resc,指明对应的Role,具有哪些权限的Resc

Role里,分来如下几种,common-不用登陆也可以查看的;userbase-登陆后的用户可以查看的基本页面或action;其他-各种具体的角色。这样,在AccessController里,首先判断,是否登陆。如果不是,则判断是否为common所对应的页面。如果是,说明用户已经登陆。首先判断是否在userbase对应页面里,是的话,允许访问;否则,到具体的用户权限里去查看,当前用户是否有这个权限。

也就是分级地进行一个查找。common,到userbase,再到具体的角色权限。

对比旧项目的处理,这样的实现会麻烦点。旧项目里,只有两个表,一个是User,这里面指明用户的id、名字、以及他们所属的角色。另一个是Role,这里面指明了各种Role所具有的权限。这样显示起来很简单,很清晰,但是对比之下,新项目的优点有如下方面:

1.   一个用户可以对应多个角色。在User_Role这张表里,是独立的关于用户角色的限定。

2.   如果一个页面或action,是多种用户所共同允许的。那么需要在Role表里插入多条这样的信息(admin user/login.jsp ; users user/login.jsp)。数据的冗余,以及修改的不方便(当插入一个新动作,新页面时,需要为各种用户都添加一个权限说明)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值