生活如同楼梯般的上上下下

生活如同楼梯般的上上下下

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.自定义注解

需要验证登录的注解

package com.etaofinance.wap.common;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Retention(RetentionPolicy.RUNTIME)//
@Target({ElementType.METHOD, ElementType.TYPE})//该注解修饰类中的方法
@Inherited
public @interface RequireLogin{
 /**
  * 登录验证注解
  * 该注解可以标记Controller 或 Controller 中的方法.
  * 如果Controller 有该标记,那么这个Controller下面所有的方法都会被过滤器
  * 进行验证
  * 如果Controller 没有有该标记,但Controller中的某个方法拥有该标记
  * 那么这个方法将被过滤器验证(其他没有被标记的不会被验证)
  * 
  * 特别注意,如果一个Controller 被标记RequireLogin 需要验证
  * 但是其中某些方法不想被验证.请参见NoRequireLogin标记
  * 
  * 茹化肖 2016年3月30日10:51:13
  */
}

  不需要验证登录的注解

package com.etaofinance.wap.common;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Retention(RetentionPolicy.RUNTIME)//
@Target(ElementType.METHOD)//该注解修饰类中的方法
@Inherited
public @interface NoRequireLogin{
 /**
  * 不需要登录验证的方法注解注解
  * 该注解在Controller 标记了 RequireLogin 特性时
  * 某个方法不需要验证登录,那么为该方法标记该注解
  * 茹化肖 2016年3月30日10:47:16
  */
}

拦截器实现

package com.etaofinance.wap.common;

import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.etaofinance.core.util.JsonUtil;
import com.etaofinance.core.util.PropertyUtils;
import com.etaofinance.entity.common.HttpResultModel;
/**
 * 权限拦截器
 * @author ofmyi_000
 *
 */
public class AuthInteceptor extends HandlerInterceptorAdapter {

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		String basePath =PropertyUtils.getProperty("java.wap.url");
		if (handler instanceof HandlerMethod) {
			HandlerMethod myHandlerMethod = (HandlerMethod) handler;
	        Object bean = myHandlerMethod.getBean();
	        Method method= myHandlerMethod.getMethod();
	        Annotation classAnnotation = bean.getClass().getAnnotation(RequireLogin.class);//类上有该标记
	        Annotation methodAnnotation=method.getAnnotation(RequireLogin.class);//方法上有该标记
	        Annotation methodNologinAnnotation=method.getAnnotation(NoRequireLogin.class);//
	        if((classAnnotation!=null&&methodNologinAnnotation==null)
	        		||(classAnnotation==null&&methodAnnotation!=null))
	        {
	        	boolean isLogin = LoginUtil.checkIsLogin(request,response);
	        	if(isLogin)
	        		return true;
	        	else{//未登录
	        		if(isAjax(request)){
	        			//Ajax请求返回JSON
	        			HttpResultModel<Object> rep=new HttpResultModel<Object>();
	        			rep.setCode(-1);
	        			rep.setMsg("请登录后操作!");
	        			String data = JsonUtil.obj2string(rep);
	        	        response.setHeader("content-type", "text/html;charset=UTF-8");
	        	        OutputStream out = response.getOutputStream();
	        	        out.write(data.getBytes("UTF-8"));
	        	        return false;
	        		}
	        		response.sendRedirect(basePath);
	        		
	        	}//IF LOGIN END
	        }//if Annotation end
		}
		return true;
	}
	private boolean isAjax(HttpServletRequest request){
		String requestType = request.getHeader("X-Requested-With");
		if (requestType != null && requestType.equals("XMLHttpRequest")) {
			return true;
		}
		return false;
	}
}

  

XML拦截器配置

...............
<mvc:interceptors>
        <bean class="com.etaofinance.wap.common.GlobalLogInteceptor">
            <property name="sourceSys" value="etaofinancewap"></property>
        </bean>
        <bean class="com.etaofinance.wap.common.AuthInteceptor" />
    </mvc:interceptors>
.................

 

posted on 2016-03-30 14:12  生活如同楼梯般的上上  阅读(6572)  评论(2编辑  收藏  举报