一个网站的权限管理,用过滤器还是拦截器更好
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个网站的权限管理,用过滤器还是拦截器更好相关的知识,希望对你有一定的参考价值。
Struts2项目通过使用Struts的if标签进行了session判断,使得未登录的用户不能看到页面,但是这 种现仅仅在view层进行,如果未登录用户直接在地址栏输入登录用户才能访问的地址,那么相应的action还是会执行,仅仅是不让用户看到罢了。这样显然是不好的,所以研究了一下Struts2的权限验证。权限最核心的是业务逻辑,具体用什么技术来实现就简单得多。
通常:用户与角色建立多对多关系,角色与业务模块构成多对多关系,权限管理在后者关系中。
对权限的拦截,如果系统请求量大,可以用Struts2拦截器来做,请求量小可以放在filter中。但一般单级拦截还不够,要做到更细粒度的权限控制,还需要多级拦截。
不大理解filter(过滤器)和interceptor(拦截器)的区别,遂google之。博文中有介绍:
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调 。
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 。
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求 起作用 。
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能 。
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容 器初始化时被调用一次 。 参考技术A 用过滤器好,拦截的话,流水失掉很多有利资源本回答被提问者采纳 参考技术B 具体要拦截些什么?用后者吧追问
过滤器,效验器,拦截器 一般都用来干什么
在一个项目里面
是只用其一还是都会用
判断登录和会员
追答拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
拦截器与过滤器的区别 :
1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
权限管理系统数据库搭建
一:权限管理系统
- 系统设计
思路:当用户点击超链接是用过滤器把这个请求拦截下来,检查下有没有访问权限,若有则放行,反之不放行
难点:对权限数据对象的管理,数据库表的设计和表之间的关系 -
数据库设计:
权限表(privilege):一个权限对应多个资源,是一对多的关系,为了不丢失关系,所以一般要在多的一方定义外键列
资源表(resource):添加分类,删除分类,修改分类,查找分类
角色表(role):可以理解为现实生活中的身份,管理员,经理等
用户表(user):可以理解为现实生活中的一个人*用户角色表(user_role):用户和角色是多对多的关系,所以需要加一张用户角色表 *角色权限表(role_privilege):权限和角色是多对多的关系,所以需要加一张角色权限表
- 表结构
以上是关于一个网站的权限管理,用过滤器还是拦截器更好的主要内容,如果未能解决你的问题,请参考以下文章
springMvc+shiro做权限管理,页面上的静态资源,样式图片等没有出现,用几种方式过滤试过,还是不行