`
jeasony
  • 浏览: 196765 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

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

阅读更多

spring aop 的权限的管理是通过对路径的控制来实现的
现在共有两个角色,经理和员工
经理的权限检查的代码
MgrAuthorityInterceptor.java
  1. public class MgrAuthorityInterceptor implements MethodInterceptor   
  2. {   
  3.   
  4.     public Object invoke(MethodInvocation invocation) throws Throwable   
  5.     {   
  6.         HttpServletRequest request = null;   
  7.         ActionMapping mapping = null;   
  8.         Object[] args = invocation.getArguments();   
  9.         //解析目标方法的参数   
  10.         for (int i = 0 ; i < args.length ; i++ )   
  11.         {   
  12.             if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];   
  13.             if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];   
  14.         }   
  15.         //从session中得到用户的级别   
  16.         String level = (String)request.getSession().getAttribute("level");   
  17.         //如是经理级别则继续,否则,回到登陆页面   
  18.         if ( level != null && level.equals("mgr") )   
  19.         {   
  20.             return invocation.proceed();   
  21.         }   
  22.         else  
  23.         {   
  24.             return mapping.findForward("login");   
  25.         }   
  26.     }   
  27. }  
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代码 复制代码
  1. public class EmpAuthorityInterceptor implements MethodInterceptor   
  2. {   
  3.   
  4.     public Object invoke(MethodInvocation invocation) throws Throwable   
  5.     {   
  6.         HttpServletRequest request = null;   
  7.         ActionMapping mapping = null;   
  8.         Object[] args = invocation.getArguments();   
  9.         for (int i = 0 ; i < args.length ; i++ )   
  10.         {   
  11.             if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];   
  12.             if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];   
  13.         }   
  14.         //从session中得到用户的级别   
  15.         String level = (String)request.getSession().getAttribute("level");   
  16.         //如是经理或员工级别则继续,否则,回到登陆页面   
  17.         if ( level != null && (level.equals("emp") || level.equals("mgr")))   
  18.         {   
  19.             return invocation.proceed();   
  20.         }   
  21.         else  
  22.         {   
  23.             return mapping.findForward("login");   
  24.         }   
  25.     }   
  26. }  
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代码 复制代码
  1. <!--  以经理权限拦截器生成代理  -->  
  2.    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  3.     <property name="beanNames">  
  4.            <list>  
  5.             action中的经理的操作   
  6.            </list>  
  7.     </property>  
  8.        <property name="interceptorNames">  
  9.            <list>  
  10.                <value>mgrAuthorityInterceptor</value>    
  11.            </list>  
  12.        </property>  
  13.    </bean>  
  14.   
  15.    <!--  以普通员工权限拦截器生成代理  -->  
  16.    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
  17.     <property name="beanNames">  
  18.            <list>  
  19.             员工中的action操作   
  20.            </list>  
  21.     </property>  
  22.        <property name="interceptorNames">  
  23.            <list>  
  24.                <value>empAuthorityInterceptor</value>    
  25.            </list>  
  26.        </property>  
  27.    </bean>  
  28.   
  29.    <!-- 定义经理权限检查拦截器,class即前面的MgrAuthorityInterceptor.java-->  
  30. <bean id="mgrAuthorityInterceptor" class="org.***.MgrAuthorityInterceptor"/>  
  31.    <!-- 定义普通员工权限检查拦截器 ,class即前面的EmpAuthorityInterceptor.java-->  
  32. <bean id="empAuthorityInterceptor" class="org.***.EmpAuthorityInterceptor"/>  
分享到:
评论

相关推荐

    Spring面试题

    4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入...

    spring security 参考手册中文版

    9.5 Spring Security中的访问控制(授权) 84 9.5.1安全和AOP建议 84 9.5.2安全对象和AbstractSecurityInterceptor 85 什么是配置属性? 85 RunAsManager 86 AfterInvocationManager 86 扩展安全对象模型 87 9.6本地...

    SSH框架实现BBS完整版

    4.5 配置Spring(AOP) 4.6 配置Spring(IOC) 4.7 大致分析业务逻辑定义部分Dao实现 4.8 测试Dao实现 4.9 分析JSP中要实现的功能在实体中建立实体方法 4.10 建立Struts2映射路径 4.11 分析实体中需要的业务逻辑在...

    SSH权限拦截系统

    采用SSH进行开发,使用Spring的AOP对目标进行拦截,有效的控制权限。

    SSH框架实现BBS完整版.2018_03_16

    4.5 配置Spring(AOP) 4.6 配置Spring(IOC) 4.7 大致分析业务逻辑定义部分Dao实现 4.8 测试Dao实现 4.9 分析JSP中要实现的功能在实体中建立实体方法 4.10 建立Struts2映射路径 4.11 分析实体中需要的业务逻辑在...

    SpringBoot+MybatisPlus+Thymeleaf+Layui+Html+MySql5.7

    使用HandlerInterceptor进行了操作权限控制 数据库表使用自增唯一ID 封装了mybatis-plus-generator代码生成器,使用菜单操作即可生成前后端代码 内置swagger2接口API 环境jdk1.8 使用AOP切面实现日志数据库存储 ...

    ff4j:Java功能标志变得简单

    :sparkles: :sparkles: :sparkles: FF4J-Java的功能翻转... 借助Spring AOP,目标实现是在运行时选择的,因此受功能状态驱动。 功能监视:对于每个功能执行,ff4j都会评估谓词,因此可以收集和记录事件,度量以计算漂亮

    SpringShiro分布式缓存版

    class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /&gt; class="org.apache.shiro.spring.security.interceptor....

    基于JavaWEB+SSM+mysql框架构建的在线商城系统源码+数据库+项目说明(课程设计).zip

    通过拦截器实现了方法级粒度的鉴权,通过AOP实现了参数校验。 --------------------------- **演示**:[https://small.ડ.com/][1] 可自行注册账号,或使用后台查看权限账号 demo 密码 demo (后台入口登陆后显示...

    shiro注解版

    class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor" /&gt; class="org.apache.shiro.spring.security.interceptor....

    基于Springboot + Vue 开发的前后端分离博客(PC端自适应+移动端微信小程序+移动端App)+源代码+文档说明

    - 新增aop注解实现操作日志功能。 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 后台管理支持修改背景图片,博客配置等信息,操作简单,支持上传相册。 - 代码支持多种搜索模式(Elastic...

    asp.net知识库

    XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL...

    Java学习笔记-个人整理的

    {1.9}流程控制}{31}{section.1.9} {1.9.1}\texttt {if\ldots esle\ldots }}{31}{subsection.1.9.1} {1.9.2}\texttt {switch}}{31}{subsection.1.9.2} {1.9.3}\texttt {while}}{32}{subsection.1.9.3} {1.9.4}\...

Global site tag (gtag.js) - Google Analytics