快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门新葡萄旗下所有网站:运用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 " + u澳门新葡萄旗下所有网站ser.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.lo澳门新葡萄旗下所有网站gin("chigo","chigo");

sbean.writeSecureMessage();

mgr.logout();

try{

mgr.login("kk澳门新葡萄旗下所有网站k","");

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

}

}

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: