`

利用Spring中的AOP做权限管理

 
阅读更多
原帖及讨论:http://bbs.bccn.net/thread-145129-1-1.html

    AOP在Spring中占有很重要的地位,做了一个例子是利用AOP来做一个登陆的身份验证。。希望能对大家有所帮助,使用了AOP可以在不破坏你的代码的前提下帮你完成验证功能。。

转一点AOP的知识:

程序代码:


1、Spring只支持方法拦截,也就是说,只能在方法的前后进行拦截,而不能在属性前后进行拦截。
2、Spring支持四种拦截类型:目标方法调用前(before),目标方法调用后(after),目标方法调用前后(around),以及目标方法抛出异常(throw)。
3、前置拦截的类必须实现MethodBeforeAdvice接口,实现其中的before方法。
4、后置拦截的类必须实现AfterReturningAdvice接口,实现其中的afterReturning方法。
5、前后拦截的类必须实现MethodInterceptor接口,实现其中的invoke方法。前后拦截是唯一可以控制目标方法是否被真正调用的拦截类型,也可以控制返回对象。而前置拦截或后置拦截不能控制,它们不能印象目标方法的调用和返回。



以上可以看出我们要选用实现MethodInterceptor接口的方法来完成这个功能。

代码如下:

接口类的定义:

程序代码:


package com.dragon.study;

public interface ILogin {
    public void login(String name);
}



接口实现类的定义:

程序代码:


package com.dragon.study.Impl;

import com.dragon.study.ILogin;

public class LoginImpl implements ILogin {
    /**
     * Login
     */
    public void login(String name) {
        System.out.println("欢迎 " + name + "登陆!");
    }
}



最重要的拦截器的定义:

程序代码:


package com.dragon.Advice;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

public class LoginInterceptor implements MethodInterceptor {
    /**
     * Interceptor
     */
    public Object invoke(MethodInvocation arg0) throws Throwable {
        String name = (String)arg0.getArguments()[0];
        if (name.equals("flash")) {
            System.out.println("这才是真正的用户! ");
            return arg0.proceed();
        } else {
            System.out.println("非法的用户~~~ ");
            return null;
        }
    }
}


ApplicationContext.xml的定义:

<beans>
<bean id="loginInterceptor" class="com.dragon.Advice.LoginInterceptor"></bean>
<bean id="loginTarget" class="com.dragon.study.Impl.LoginImpl"></bean>
<bean id="login" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyInterfaces">
    <value>com.dragon.study.ILogin</value>
  </property>
  <property name="interceptorNames">
    <list>
     <value>loginInterceptor</value>
   </list>
  </property>
  <property name="target">
    <ref bean="loginTarget"/>
  </property>
</bean>
</beans>





OK,以上就是所有代码,下面做一个测试类:

Test类定义:

程序代码:


package com;

import java.io.*;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.dragon.study.ILogin;

public class Test {
    public static void main(String[] args) throws IOException {
        ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
        ILogin login = (ILogin)ctx.getBean("login");
        login.login("flash"); //用户为flash是正确用户,否则是错误的
    }
}
分享到:
评论

相关推荐

    Spring Boot AOP权限控制模块开发

    Spring Boot AOP权限控制模块开发,利用AOP功能完成属于自己的权限模块开发

    Java利用spring aop进行监测方法执行耗时

    可扩展性强:使用 Spring AOP 进行方法耗时监测,可以方便的对其他的切面进行扩展,例如:日志、异常处理、权限控制等切面。 4. 提高系统性能:通过对系统中的方法进行耗时监测,可以及时发现系统中的性能瓶颈,...

    Spring权限控制

    在web应用中,有些功能是需要用户登录之后才能够使用的。如果web层我们使用的是Struts,那么在执行某些Action的时候,就需要对用户是否登录...利用Spring 的AOP,我们完全可以将验证用户是否登录抽取出来做成“切面”。

    Spring-Security-Demo

    SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和授权。在Spring Framework基础上,Spring Security充分利用了依赖注入...

    SpringBoot集成常用开发中间件,分库分表,缓存,消息队列,定时器,权限管理等组件.zip

    springboot Spring框架是Java平台上的一种开源应用框架,提供具有控制反转...Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。

    Springboot + shiro权限管理 这或许是流程最详细、代码最干净、配置最简单的shiro上手项目了 .zip

    springboot Spring框架是Java平台上的一种开源应用框架,提供具有控制反转...Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。

    shiro集成hibernate和spring

    之后就可以在Controller上面利用注解比如: @RequiresPermissions(value = { "user:select" }) 当然也可以利用Spring的aop也是一样呢 假如发现问题可以联系本人QQ134266212 或者邮箱noatnu@163.com

    Spring入门

    2、轻松实现如权限拦截、运行期监控等功能:利用Spring提供了AOP技术。 3、 提供单例模式支持,开发人员不再需要自己编写实现代码 4、Spring提供了众多服务。如:事务管理,编程人员不再需要手工控制事务,也不需...

    Java简单模拟电子拍卖系统

    利用了Spring AOP机制解决了Ajax应用的权限检查问题,应用权限检查推迟到业务逻辑层方法中进行。当权限检查失败时候,会抛出一个自己定义的AuctionException异常。 此外,还利用到了Spring的任务调度和邮件支持。当...

    Spring面试题

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

    ssm_traveller:基于ssm的旅游后台管理系统,使用AdminLTE 前端框架,实现基本的CRUD功能,使用spring-security进行用户登录权限控制,利用spring aop记录访问日志

    旅游后台管理系统 1、项目环境 IDEA 2018.2 Mysql 5.5.27 jdk1.8 tomcat7 2、如何启动 1、在启动位置,配置maven,模块为ssm_web,使用tomcat7:run启动 2、网址: ​ 用户:admin 密码:123

    Crm客户关系管理系统

    利用相应的信息技术以及互联网技术来协调企业与顾客间在销售、营销和服务上的交互,从而提升其管理方式,向客户提供创新式的个性化的客户交互和服务,系统提供营销管理、客户管理、用户管理、角色管理、模块管理、...

    spring笔记

    (4)容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能。 (5)容器提供的众多辅作类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate. (6)对主流的应用框架提供了集成支持...

    基于SSM框架的生产管理ERP系统源码+数据库+项目文档,含计划进度、设备管理、工艺监控、物料监控、人员监控、质量监控、系统管理

    Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态...

    springboot+spring security+JWT+mybatisplus

    用springboot集成security,做用户验证和权限管理;JWT认证token;利用Aop做操作日志; 用mybatisplus 实现代码自动生成工具类。用swagger实现接口文档

    基于字典树的大学生交流 社区的设计与实现

    在该系统中,实现敏感词过滤时用到了字典树算法,在实现热点排序的时候用到了权值计算,同时利用Redis缓存实现点赞和关注,利用Kafka实现系统通知,并且采用AOP统一进行了状态管理,异常处理,而Spring Security ...

    java ssm开发的生产管理ERP系统

    - Spring(IOC DI AOP 声明式事务处理) - SpringMVC(支持Restful风格) - Hibernate Validator(参数校验) - Mybatis(最少配置方案) - shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的...

    weixin135房屋租赁管理系统的设计与实现+ssm--论文pf.rar

    Spring:一个开源的轻量级Java SE/Java EE全功能栈框架,提供了IoC容器和AOP功能,可以管理对象的生命周期和声明式事务。 Spring MVC:作为Spring的一个模块,提供了构建Web应用程序的MVC(模型-视图-控制器)设计...

    JAVA制造装备物联及生产管理(ERP)系统源码

    Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的...

    MF00331-JAVA制造装备物联生产管理(ERP)源码.zip

    Spring(IOC DI AOP 声明式事务处理) SpringMVC(支持Restful风格) Hibernate Validator(参数校验) Mybatis(最少配置方案) shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态...

Global site tag (gtag.js) - Google Analytics