程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 運用Spring AOP驗證用戶權限實例

運用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());
}
}
}

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved