• spring aop实现权限控制,路径控制


    spring aop 的权限的管理是通过对路径的控制来实现的 
    现在共有两个角色,经理和员工 
    经理的权限检查的代码 
    MgrAuthorityInterceptor.java 
    Java代码  
    public class MgrAuthorityInterceptor implements MethodInterceptor  
    {  
      
        public Object invoke(MethodInvocation invocation) throws Throwable  
        {  
            HttpServletRequest request = null;  
            ActionMapping mapping = null;  
            Object[] args = invocation.getArguments();  
            //解析目标方法的参数  
            for (int i = 0 ; i < args.length ; i++ )  
            {  
                if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];  
                if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];  
            }  
            //从session中得到用户的级别  
            String level = (String)request.getSession().getAttribute("level");  
            //如是经理级别则继续,否则,回到登陆页面  
            if ( level != null && level.equals("mgr") )  
            {  
                return invocation.proceed();  
            }  
            else  
            {  
                return mapping.findForward("login");  
            }  
        }  
    }  
     
    员工的权限的实现,EmpAuthorityInterceptor.java 
    Java代码  
    public class EmpAuthorityInterceptor implements MethodInterceptor  
    {  
      
        public Object invoke(MethodInvocation invocation) throws Throwable  
        {  
            HttpServletRequest request = null;  
            ActionMapping mapping = null;  
            Object[] args = invocation.getArguments();  
            for (int i = 0 ; i < args.length ; i++ )  
            {  
                if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];  
                if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];  
            }  
            //从session中得到用户的级别  
            String level = (String)request.getSession().getAttribute("level");  
            //如是经理或员工级别则继续,否则,回到登陆页面  
            if ( level != null && (level.equals("emp") || level.equals("mgr")))  
            {  
                return invocation.proceed();  
            }  
            else  
            {  
                return mapping.findForward("login");  
            }  
        }  
    }  
     
     
    员工,经理权限的实现,在action-servlet.xml中 
    Xml代码  
    <!--  以经理权限拦截器生成代理  -->  
       <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        <property name="beanNames">  
               <list>  
                action中的经理的操作  
               </list>  
        </property>  
           <property name="interceptorNames">  
               <list>  
                   <value>mgrAuthorityInterceptor</value>   
               </list>  
           </property>  
       </bean>  
      
       <!--  以普通员工权限拦截器生成代理  -->  
       <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        <property name="beanNames">  
               <list>  
                员工中的action操作  
               </list>  
        </property>  
           <property name="interceptorNames">  
               <list>  
                   <value>empAuthorityInterceptor</value>   
               </list>  
           </property>  
       </bean>  
      
       <!-- 定义经理权限检查拦截器,class即前面的MgrAuthorityInterceptor.java-->  
    <bean id="mgrAuthorityInterceptor" class="org.***.MgrAuthorityInterceptor"/>  
       <!-- 定义普通员工权限检查拦截器 ,class即前面的EmpAuthorityInterceptor.java-->  
    <bean id="empAuthorityInterceptor" class="org.***.EmpAuthorityInterceptor"/>  
  • 相关阅读:
    MYSQL数据库导入数据时出现乱码的解决办法
    Java Web(一) Servlet详解!!
    hibernate(九) 二级缓存和事务级别详讲
    MySQL(五) MySQL中的索引详讲
    LinkedHashMap源码详解
    hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
    hibernate(七) hibernate中查询方式详解
    MySQL(四) 数据表的插入、更新、删除数据
    MySQL(三) 数据库表的查询操作【重要】
    MySQL(二) 数据库数据类型详解
  • 原文地址:https://www.cnblogs.com/huapox/p/3251565.html
Copyright © 2020-2023  润新知