场景:微信公众号开放一个路由单点登录进第三方系统,前端:获取微信code传到后端认证接口,接口返回token认证成功调转到主页面。 后端:1、判断是否登录状态,是则返回token,否则继续。2、接收code解析出openId,还是看代码吧。
问题:第一次单点正常进入主页面,之后非正常退出的情况下再单点一直显示403
public AjaxResult userInfo(@RequestParam("code") String code) throws Exception {
//本地是否已登录
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
if (StringUtils.isNotNull(loginUser))
{
AjaxResult success = AjaxResult.success();
String token = loginUser.getToken();
success.put(Constants.TOKEN, token);
return success;
}
WxMpOAuth2AccessToken wxMpOAuth2AccessToken;
try
{
wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
}
catch (WxErrorException e)
{
throw new Exception(e.getError().getErrorMsg());
}
String openId = wxMpOAuth2AccessToken.getOpenId();
//绑定账号
SysUser user= userService.selectByWxOpenId(openId);
String token;
if(StringUtils.isNull(user))
{
return AjaxResult.warn(mpServer + "#/binding" + "?openId=" + openId);
}
else
{
token = loginService.pointLogin(user.getUserName());
redisCache.setCacheObject(code, token, 1, TimeUnit.DAYS);
}
AjaxResult ajax = AjaxResult.success();
ajax.put(Constants.TOKEN, token);
return ajax;
}