ShopDecorationFilter MVC interceptor,writejson

package com.enterprise.web.filter;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.enterprise.domain.AjaxResult;
import com.enterprise.service.MerchantCommonService;
import com.enterprise.util.Result;
import com.enterprise.web.security.HyipUserDetail;

/**
 * 拦截店铺装修请求
 * 
 * @author chen.kuan 2015年12月28日
 *
 */
public class ShopDecorateInterceptor extends HandlerInterceptorAdapter {
	private static final Logger logger = LoggerFactory.getLogger(ShopDecorateInterceptor.class);

	@Autowired
	private MerchantCommonService merchantCommonService;

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		if (logger.isDebugEnabled()) {
			logger.debug("pre handle,url>>{}", request.getRequestURI());
		}

		SecurityContext context = SecurityContextHolder.getContext();
		if (context == null) { // 用户没有登录
			return true;
		}
		// 获取待装修店铺的userId
		String merchantUserId = request.getParameter("_merchant_user_id_");
		if (merchantUserId == null) {
			Authentication authentication = context.getAuthentication();
			HyipUserDetail userDetail = (HyipUserDetail) authentication.getPrincipal();
			merchantUserId = userDetail.getId() + "";
		}
		boolean accept = accept(Long.valueOf(merchantUserId));
		if (!accept) {
			writeDenied(response);
			return false;
		}
		return true;
	}

	private boolean accept(Long userId) {
		Result tagsResult = merchantCommonService.getTags(userId);
		String tags = (String) tagsResult.getData();
		if ('1' == tags.charAt(0)) { // 企业商家
			return true;
		}
		if ('1' == tags.charAt(1)) {
			return true;
		}
		return false;
	}

	private void writeDenied(HttpServletResponse response) {
		AjaxResult ajaxResult = AjaxResult.failed(-1);
		JSONObject responseJson = JSONObject.fromObject(ajaxResult); // Spring MVC 里面的JSON converter用的net.sf.json.JSONObject
		String content = responseJson.toString();

		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json; charset=utf-8");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.append(content);
			out.flush();
		} catch (IOException e) {
		} finally {
			if (out != null) {
				out.close();
			}
		}
	}

}

猜你喜欢

转载自curious.iteye.com/blog/2295742
MVC