| @@ -11,13 +11,14 @@ import lombok.extern.slf4j.Slf4j; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||
| import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.apache.shiro.SecurityUtils; | import org.apache.shiro.SecurityUtils; | ||||
| import org.apache.shiro.subject.Subject; | import org.apache.shiro.subject.Subject; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Controller; | import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.servlet.http.Cookie; | |||||
| import javax.servlet.http.HttpServletResponse; | |||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -37,10 +38,20 @@ public class WechatLoginController extends BaseController { | |||||
| @ApiOperation(value = "微信网页登录回调", notes = "请配置此callback到网页redirect_uri") | @ApiOperation(value = "微信网页登录回调", notes = "请配置此callback到网页redirect_uri") | ||||
| @GetMapping("callback") | @GetMapping("callback") | ||||
| public ResultData getAccessToken(String code) { | |||||
| @ResponseBody | |||||
| public ResultData getAccessToken(String code, HttpServletResponse response) { | |||||
| ResultData r = new ResultData(); | ResultData r = new ResultData(); | ||||
| try { | try { | ||||
| WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code); | WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code); | ||||
| // 保存 access_token 到 cookie,两小时过期 | |||||
| Cookie accessTokencookie = new Cookie("accessToken", accessToken.getAccessToken()); | |||||
| accessTokencookie.setMaxAge(60 *2); | |||||
| response.addCookie(accessTokencookie); | |||||
| Cookie openIdCookie = new Cookie("openId", accessToken.getOpenId()); | |||||
| openIdCookie.setMaxAge(60 *2); | |||||
| response.addCookie(openIdCookie); | |||||
| // check user openid 是否是已授权用户 | // check user openid 是否是已授权用户 | ||||
| MallUserInfo user = mallUserInfoService.getByWebOpenId(accessToken.getOpenId()); | MallUserInfo user = mallUserInfoService.getByWebOpenId(accessToken.getOpenId()); | ||||
| if(user != null) { | if(user != null) { | ||||
| @@ -64,9 +75,15 @@ public class WechatLoginController extends BaseController { | |||||
| Map<String, String> map = new HashMap<String, String>(); | Map<String, String> map = new HashMap<String, String>(); | ||||
| map.put("accessToken", accessToken.getAccessToken()); | map.put("accessToken", accessToken.getAccessToken()); | ||||
| map.put("openId", accessToken.getOpenId()); | map.put("openId", accessToken.getOpenId()); | ||||
| map.put("unionId", accessToken.getUnionId()); | |||||
| //map.put("unionId", accessToken.getUnionId()); | |||||
| r.data = map; | r.data = map; | ||||
| } | } | ||||
| // if (user == null) { | |||||
| // response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/bind?type="+Constants.LOGIN_TYPE_WECHAT); | |||||
| // } else { | |||||
| // //如果用户已存在,则直接登录 | |||||
| // response.sendRedirect(request.getContextPath() + "/student/html/index.min.html#/app/home?open_id=" + openId); | |||||
| // } | |||||
| return r; | return r; | ||||
| } catch (WxErrorException e) { | } catch (WxErrorException e) { | ||||
| log.error(e.getMessage()); | log.error(e.getMessage()); | ||||