OA系统设置权限

来源:互联网 发布:淘宝卖雅尼的cd 编辑:程序博客网 时间:2024/04/27 18:39


*1.定义Privilege类:name,url,parent,child,roles(和Role多对多关系)

 *2.安装权限列表数据Installer:
       *因为需要用到SessionFactory和事务管理,所以把Installer交给Spring管理
       *获取ApplicationContext:通过new ClassPathXmlApplicationContext()来获得Spring容器。不能通过实现ApplicationContextAware/或 WebApplicationContextUtils.getWebApplicationContext(servletContext)来获得spring容器(会报错)
       *获取Installer实例,再install():ac.getBean("installer")

 *3.实现容器初始化监听器InitListener:用于监听Tomcat启动时,就把权限数据name和url取出来放到Application域里
       *实现ServletContextListener:

       *获取ApplicationContext: WebApplicationContextUtils.getWebApplicationContext(servletContext)或new ClassPathXmlApplicationContext()都可以获得Spring容器,推荐前者。
       *获取PrivilegeService:  ac.getBean("privilegeService"),注意不能通过注入获得PrivilegeService Bean
       *获取topPrivilegeName和allPrivilegeUrls
 
 *4.在岗位管理里添加设置权限的功能:用户拥有的权限等于它所拥有的岗位的所有权限相加

 *5.在user类里提供hasPrivilegeByName()和hasPrivilegeByUrl()方法

 *6.left页面根据权限显示菜单:
  <s:if test="#session.user.hasPrivilegeByName()">
      有权限就显示这个菜单
  </s:if>

 *7.右侧压面根据权限显示<s:action>标签:
  *做法一:跟显示菜单一样,每个action都用<s:if../>判断一样
  *做法二:改写AnchorTag类,加入doEndTag()方法:
   if(user.hasPrivilegeByUrl(priUrl)){
    return super.doEndTag(); //正常的生成并显示超链接标签,并继续执行页面中后面的代码
   }else{
    return EVAL_PAGE;   //不生成和显示超链接标签,继续执行页面中后面的代码
   }  

   *注意:在doEndTag方法里,可以通过pageContext来获得当前jsp页面,进而通过pageContext获得session域里的user对象。(因为在定义标签时已经通过setPageContext()方法把当前jsp页面注入进来了)

 *8.根据权限拦截用户请求:(防止那些没有action标签但直接通过url访问的非法用户)
  *如果user为空且请求的是登陆url,放行;如果user不为空,且该user具有请求的权限,放行;否则返回去权限的错误。
  *如果是基础权限,放行.(指在权限列表没有安装数据的其他权限)


注:因为是笔记,写的比较抽象,有什么问题可以给我留言或发我邮箱ziysong@163.com~~~


0 0