`
iorit2003
  • 浏览: 142199 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Spring AOP验证用户权限

阅读更多
1.新建一个Java普通工程,并需导入spring-aop.jar包;
2.建UserInfo类:
package aop.secure;

public class UserInfo {
   
    private String userName;
    private String password;
   
    public UserInfo(String userName, String password){
        this.userName = userName;
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public String getUserName() {
        return userName;
    }
}

3.建安全信息提示类SecureBean:
package aop.secure;

public class SecureBean {

    public void writeSecureMessage(){
        System.out.println("Every time I learn something new and it pushes some old stuff out of my brain.");
    }
}

4.建切面类SecurityAdvice实现org.springframework.aop.MethodBeforeAdvice:
package aop.secure;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class SecurityAdvice implements MethodBeforeAdvice {

    private SecurityManager securityManager;
   
    public SecurityAdvice(){
        this.securityManager = new SecurityManager();
    }

    public void before(Method method, Object[] args, Object target) throws Throwable {
        UserInfo user = securityManager.getLoggedOnUser();
        if(user == null){
            System.out.println("No user authenticated.");
            throw new SecurityException("Method name: " + method.getName());
        }else if("chigo".equals(user.getUserName()) && "chigo".equals(user.getPassword())){
            System.out.println("OKAY!");
        }else{
            System.out.println("Logged in user is: " + user.getUserName());
            throw new SecurityException("User " + user.getUserName() + " is not allowed access to method " + method.getName());
        }
    }

}

5.建登陆与注销管理类SecurityManager:
package aop.secure;

public class SecurityManager {
   
    private static ThreadLocal local = new ThreadLocal();
   
    public void login(String userName, String password){
        local.set(new UserInfo(userName,password));
    }
   
    public void logout(){
        local.set(null);
    }
   
    public UserInfo getLoggedOnUser(){
        return (UserInfo)local.get();
    }
}

6.最后建测试类SecurityExample:
package aop.secure;

import org.springframework.aop.framework.ProxyFactory;

public class SecurityExample {

    private static SecureBean getSecureBean(){
        SecureBean sbean = new SecureBean();
        SecurityAdvice sadvice = new SecurityAdvice();
        ProxyFactory pf = new ProxyFactory();
        pf.setTarget(sbean);
        pf.addAdvice(sadvice);
        SecureBean factory = (SecureBean)pf.getProxy();
        return factory;
    }
   
    public static void main(String[] args) {
        SecurityManager mgr = new SecurityManager();
        SecureBean sbean = getSecureBean();
       
        mgr.login("chigo","chigo");
        sbean.writeSecureMessage();
        mgr.logout();
       
        try{
            mgr.login("kkk","");
            sbean.writeSecureMessage();
        }catch(SecurityException ex){
            System.out.println("Exception caught: " + ex.getMessage());
        }finally{
            mgr.logout();
        }
       
        try{
            sbean.writeSecureMessage();
        }catch(SecurityException ex){
            System.out.println("Exception caught: " + ex.getMessage());
        }
    }

}
分享到:
评论

相关推荐

    Java之Spring AOP 实现用户权限验证

    在本文中,我们将重点探讨如何使用Spring AOP实现用户权限验证。 首先,权限验证是任何应用程序中不可或缺的一部分,尤其是涉及到用户登录和访问控制的场景。通过Spring AOP,我们可以将权限验证的逻辑与业务代码...

    spring aop 实现权限的简单示例

    3. `Test`包:测试类,用于验证权限验证功能是否正常工作。 4. `pom.xml`:Maven配置文件,确保项目依赖正确,包括Spring AOP和其他相关库。 5. `applicationContext.xml`或`@Configuration`类:Spring配置文件,...

    spring aop 学习笔记

    - **权限校验**:在方法执行前进行用户权限验证,确保安全。 5. **源码解析** - Spring AOP的实现涉及到反射、动态代理、代理模式等多个核心Java技术。 - `org.springframework.aop.framework.ProxyFactoryBean`...

    Spring AOP 权限

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,用于实现诸如日志记录、性能监控、事务管理以及,如题目所述,权限控制等跨功能关注点。本篇文章将深入探讨如何利用Spring AOP来实现权限管理,以及相关的...

    SpringAOP.rar_springAOP

    通过切面,可以实现细粒度的权限检查,如验证用户权限是否允许访问特定资源。 3.4 性能监控 在关键方法的切点上应用通知,可以收集性能指标,帮助优化系统性能。 四、实现方式 4.1 注解驱动的AOP 使用`@Aspect`...

    spring aop所需jar包

    - 安全控制:检查用户权限,确保只有授权用户才能访问特定资源。 - 性能监控:在关键方法周围添加计时器,以跟踪性能瓶颈。 - 事务管理:确保数据库操作在正确的情况下提交或回滚,无需在业务代码中显式处理。 6...

    Spring Aop使用实例

    - 测试类:用来验证AOP功能是否正确工作。 通过运行这个项目,你可以看到AOP如何在实际场景中工作,如何通过切面和通知来增强业务逻辑。 总的来说,Spring AOP提供了一种灵活的方式,让我们可以在不侵入核心业务...

    spring aop

    在Web项目中,Spring AOP通常用于处理跨多个控制器和业务层方法的通用任务,如记录请求日志、验证权限、事务管理等。通过配置或注解,你可以确保这些逻辑在每次相关方法执行时自动触发,从而提高代码的可读性和可...

    Spring aop代码

    3. 安全性检查:在方法执行前验证用户权限。 4. 性能监控:计算方法的执行时间,分析系统性能瓶颈。 压缩包中的"aop"文件可能是包含这些示例代码的目录,其中可能有Java源代码文件、配置文件以及测试类。测试代码...

    SpringMVC+springAOP+spring security+Hibernate整合实例代码

    在这个整合实例中,Spring Security可能会配置用户登录、权限控制和URL访问过滤,以确保只有授权的用户能访问特定资源。 4. Hibernate:Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的...

    Spring基础:Spring AOP简单使用

    Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它扩展了传统的面向对象编程(OOP),使得开发者能够更好地处理系统中的横切关注点,如日志、事务管理、权限控制等。...

    Spring 2.5 AOP 例子

    - 安全控制:验证用户权限,限制访问。 - 错误处理:捕获并处理运行时异常。 综上所述,Spring 2.5 AOP例子展示了如何利用类扫描和XML配置实现面向切面编程。通过理解这些概念和实践,我们可以更高效地管理和维护...

    aop 权限验证demo

    综上所述,"aop 权限验证demo"提供了一个利用Spring AOP进行权限控制的实例,它展示了如何在不修改业务代码的情况下,通过切面来插入权限检查,提高了代码的整洁性和安全性。通过对不同类型的AOP通知的理解和实践,...

    Spring Aop demo

    在Spring框架中,AOP用于处理系统中的横切关注点,比如日志记录、事务管理、权限验证等,这些功能往往需要在多个类或方法中重复实现。通过AOP,我们可以把这些通用的功能模块化,然后在需要的地方进行“织入”,提高...

    Spring AOP 的实现例子(基于XML配置实现)

    在实际开发中,我们经常使用AOP来处理如日志记录、事务管理、权限校验等横切关注点问题,以提高代码的复用性和可维护性。 XML配置是Spring AOP早期的主要实现方式,虽然现在有更简洁的注解式配置,但理解XML配置...

    Spring aop.docx

    4. **安全控制**:验证用户权限,防止非法访问。 5. **异常处理**:全局异常捕获和处理,提供统一的错误反馈。 **Aspect概念** 在Spring AOP中,Aspect是核心概念,它封装了横切关注点,即那些跨越多个对象的业务...

    Spring-Aop所有jar

    在实际开发中,Spring AOP的应用场景广泛,比如记录日志、事务管理、权限验证等。通过使用Spring AOP,开发者可以专注于业务逻辑,而将这些常见的系统服务抽象出来,提高代码的可维护性和复用性。 总之,Spring AOP...

    基于spring_aop_权限管理系统原型

    总的来说,基于Spring AOP的权限管理系统原型展示了如何利用AOP的`MethodInterceptor`来实现细粒度的权限控制,将权限验证逻辑与业务逻辑分离,使得代码更加模块化和可维护。同时,这种方式也允许我们在不修改业务...

Global site tag (gtag.js) - Google Analytics