Spring AOP验证用户权限实例

转帖|其它|编辑:郝浩|2009-01-09 11:31:14.000|阅读 2206 次

概述:事例讲解运用Spring AOP验证用户权限实例,代码及说明都有,和喜爱这方面的朋友共同分享。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

文章关键字:|Spring AOP|验证|用户|权限|实例|java|

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());

    }

  }

}[SPAN]
 
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());

    }

  }

}


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP