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