11 changed files with 73 additions and 188 deletions
@ -1,65 +0,0 @@ |
|||
package com.qs.serve.common.framework.interceptor; |
|||
|
|||
import com.qs.serve.common.framework.redis.RedisService; |
|||
import com.qs.serve.common.framework.security.model.LoginUser; |
|||
import com.qs.serve.common.framework.security.model.LoginUserDTO; |
|||
import com.qs.serve.common.model.consts.GySysConst; |
|||
import com.qs.serve.common.model.consts.RedisCacheKeys; |
|||
import com.qs.serve.common.util.JsonUtil; |
|||
import com.qs.serve.common.util.StringUtils; |
|||
import org.springframework.context.annotation.Configuration; |
|||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
|||
import org.springframework.security.core.context.SecurityContextHolder; |
|||
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; |
|||
import org.springframework.web.servlet.HandlerInterceptor; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import java.io.IOException; |
|||
import java.util.Objects; |
|||
|
|||
/** |
|||
* API接口身份拦截器 |
|||
* @author YenHex |
|||
*/ |
|||
@Configuration(proxyBeanMethods = false) |
|||
public class ApiAuthInterceptor implements HandlerInterceptor { |
|||
|
|||
|
|||
@Resource private RedisService redisService; |
|||
|
|||
@Override |
|||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { |
|||
String token = request.getHeader(GySysConst.APP_TOKEN_PROP); |
|||
String loginUserJson = redisService.getString(RedisCacheKeys.LOGIN_KEY_WX+token); |
|||
if(loginUserJson!=null){ |
|||
LoginUser loginUser = Objects.requireNonNull(JsonUtil.jsonToPojo(loginUserJson, LoginUserDTO.class)).loginUser(); |
|||
String wxLoginKey = StringUtils.format(RedisCacheKeys.LOGIN_KEY_WXUSER,loginUser.getUserId()); |
|||
String sysUserId = redisService.getString(wxLoginKey); |
|||
if(sysUserId!=null){ |
|||
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); |
|||
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); |
|||
SecurityContextHolder.getContext().setAuthentication(authentication); |
|||
return true; |
|||
} |
|||
} |
|||
try { |
|||
response.setHeader("Access-Control-Allow-Origin", "*"); |
|||
response.setHeader("Access-Control-Allow-Credentials", "true"); |
|||
response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS"); |
|||
response.setHeader("Access-Control-Max-Age", "86400"); |
|||
response.setHeader("Access-Control-Allow-Headers", "*"); |
|||
response.setStatus(200); |
|||
response.setCharacterEncoding("UTF-8"); |
|||
response.setCharacterEncoding("UTF-8"); |
|||
response.setContentType("application/json;charset=UTF-8"); |
|||
response.getWriter().print("{\"status\":401,\"msg\":\"用户信息无效或过期了\"}"); |
|||
response.getWriter().flush(); |
|||
} catch (IOException e) { |
|||
e.printStackTrace(); |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue