权限的表设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于RBAC的权限分配:

在做权限分配时:首先需要几张表。见下图

用户表

角色表:

用户角色表:

角色权限表:

struts2 角色权限filter(过滤器)和interceptor(拦截器)

分类:mvc框架-struts22012-12-23 11:27 358人阅读评论(0) 收藏举报

Struts2项目通过使用Struts的if标签进行了session判断,使得未登录的用户不能看到页面,但是这种现仅仅在view层进行,如果未登录用户直接在地址栏输入登录用户才能访问的地址,那么相应的action还是会执行,仅仅是不让用户看到罢了。这样显然是不好的,所以研究了一下Struts2的权限验证。

权限最核心的是业务逻辑,具体用什么技术来实现就简单得多。

通常:用户与角色建立多对多关系,角色与业务模块构成多对多关系,权限管理在后者关系中。

对权限的拦截,如果系统请求量大,可以用Struts2拦截器来做,请求量小可以放在filter中。但一般单级拦截还不够,要做到更细粒度的权限控制,还需要多级拦截。

不大理解filter(过滤器)和interceptor(拦截器)的区别,遂google之。博文中有介绍:

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能。

5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

为了学习决定把两种实现方式都试一下,然后再决定使用哪个。

权限验证的Filter实现:

web.xml代码片段

1

2

3SessionInvalidate

4filter.SessionCheckFilter

5

6checkSessionKey

7loginName

8

9

10redirectURL

11/entpLogin.jsp

12

13

14notCheckURLList

15

/entpLogin.jsp,/rois/loginEntp.action,/entpRegister.jsp,/test.jsp,/ rois/registerEntp.action

16

17

18

19

20SessionInvalidate

21/rois/*

22

23

24

25SessionInvalidate

26/jsp/*

27

SessionCheckFilter.java代码

28package filter;

29import java.io.IOException;

30import java.util.HashSet;

31import java.util.Set;

32import javax.servlet.Filter;

33import javax.servlet.FilterChain;

34import javax.servlet.FilterConfig;

35import javax.servlet.ServletException;

36import javax.servlet.ServletRequest;

37import javax.servlet.ServletResponse;

38import javax.servlet.http.HttpServletRequest;

39import javax.servlet.http.HttpServletResponse;

40import javax.servlet.http.HttpSession;

41/**

42 * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面配置参数

checkSessionKey 需检查的在 Session 中保存的关键字

43 * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath

notCheckURLList

44 * 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath

45 */

46public class SessionCheckFilter implements Filter {

47protected FilterConfig filterConfig = null;

48private String redirectURL = null;

49private Set notCheckURLList = new HashSet();

50private String sessionKey = null;

51@Override

52public void destroy() {

相关文档
最新文档