ssm框架完成微信公众号授权

这是整个的一个流程(按自己的理解所写的)
在这里插入图片描述

1:首先确定好搭建好ssm框架
2:首先确保有微信公众号的资源

第一步
wechat的Controlller 以及wechat的util帮助类文档放入项目之中

第二步
拦截器的开始

/**
 * renrenbx
 */
package com.huzhu.mobile.interceptor;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.huzhu.commons.cache.Cache;
import com.huzhu.commons.util.JsonUtil;
import com.huzhu.commons.util.ToolUtil;
import com.huzhu.mobile.annotation.WeChatIgnoreAnnotation;
import com.huzhu.mobile.configuration.EnvironConfig;


/**
 * 获取微信信息
 */
public class WeChatInterceptor extends HandlerInterceptorAdapter {

	private final Logger logger = LoggerFactory
			.getLogger(WeChatInterceptor.class);


	@Autowired
	private Cache cache;

	@SuppressWarnings("rawtypes")
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {

		List<String> corsOriginList = new ArrayList<>();

		String curOrigin = request.getHeader("Origin");
		logger.info("当前访问来源是:{}", curOrigin);

		if (EnvironConfig.getInstance().getEnvironment()
				.getProperty("sys.mode").equals("pro")) {
			corsOriginList.add("http://m1.renrenbx.com");
			corsOriginList.add("https://m1.renrenbx.com");
		} else {
			corsOriginList.add("http://localhost:8081");
			corsOriginList.add(curOrigin);
		}

		if (curOrigin != null && (corsOriginList.contains(curOrigin))) {
			response.setHeader("Access-Control-Allow-Origin", curOrigin);
			response.setHeader("Access-Control-Allow-Headers",
					"X-Requested-With,content-type,token");
			response.setHeader("Access-Control-Allow-Methods",
					"GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
		}

		logger.info("WeChatInterceptor requrl:" + request.getRequestURL()
				+ " requri:" + request.getRequestURI());

		HandlerMethod handlerMethod = (HandlerMethod) handler;

		String openId = "";

			// 是否忽略微信认证请求
			WeChatIgnoreAnnotation ignoreAnnotation = AnnotationUtils
					.findAnnotation(handlerMethod.getMethod(),
							WeChatIgnoreAnnotation.class);

			if (ignoreAnnotation != null) {
				return true;
			}

			String cacheValue = ToolUtil.getMobileSessionId(request);
			if (StringUtils.isBlank(cacheValue)) {
				cacheValue = ToolUtil.setMobileSessionId(request, response);
			}

			// 判断有没有微信的信息
			logger.info("WeChatInterceptor cacheValue  ------------------------------------------->"
					+ cacheValue);
			Object value = cache.get("__key_wechat_openid_" + cacheValue);
			logger.info("WeChatInterceptor value  ------------------------------------------->"
					+ value);

			if (value == null) {
				String url = request.getRequestURI() + "?"
						+ request.getQueryString();
				String urlParam = URLEncoder.encode(url, "UTF8");
				response.sendRedirect(EnvironConfig.getInstance().getString(
						"sys.basicurl")
						+ "/wechat/oauth?referer=" + urlParam);
				return false;
			}

			Map map = JsonUtil.fromJson2Map((String) value);

			request.setAttribute("wxOpenId", map.get("openId"));
			request.setAttribute("wxNickname", map.get("nickname"));
			request.setAttribute("wxHeadimgurl", map.get("headimgurl"));

			openId = map.get("openId").toString();
		

		logger.info("WeChatInterceptor openId  ------------------------------------------->"
				+ openId);

		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {

	}
	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {

	}
	private void setUserInfo(String uid, HttpServletRequest request) {	
	}
}

主要来说 就是对拦截的信息做判读语句和语法 这里的拦截所有 直接进入微信的里面

第三步

模拟测试 是否进入到微信里面 是否判读

详细代码项目 私聊 !!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值