SSO单点登录

匿名 (未验证) 提交于 2019-12-03 00:26:01
 import com.alibaba.fastjson.JSON; import io.jsonwebtoken.impl.Base64UrlCodec; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Map;  @Component public class AuthInterceptor extends HandlerInterceptorAdapter {     @Override     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {         String newToken = request.getParameter("newToken");         if (newToken != null && newToken.length() > 0) {             CookieUtil.setCookie(request, response, "token", newToken, WebConst.COOKIE_TIME_OUT, false);         }         if (newToken == null) {             newToken = CookieUtil.getCookieValue(request, "token", false);         }         if (newToken != null) {             Map map=getMap(newToken);             String nickName = (String) map.get("nickName");             request.setAttribute("nickName", nickName);         }         //        HandlerMethod handlerMethod = (HandlerMethod) handler;         LoginRequire methodAnnotation = handlerMethod.getMethodAnnotation(LoginRequire.class);         if (methodAnnotation != null) {             //ip             String currentIp = request.getHeader("x-forwarded-for");             if (newToken != null) {                 String result = HttpclientUtil.doGet(WebConst.VERIFY_URL + "?token=" + newToken + "&currentIp=" + currentIp);                 if ("success".equals(result)) {                     Map map=getMap(newToken);                     String userId = (String) map.get("userId");                     request.setAttribute("userId", userId);                     return true;                 } else {                     if (methodAnnotation.autoRedirect()) {                         String requestUrl = request.getRequestURL().toString();                         String encode = URLEncoder.encode(requestUrl, "UTF-8");                         response.sendRedirect(WebConst.LOGIN_ADDRESS + "?originUrl=" + encode);                         return false;                     }                 }             }           }          return true;     }     public Map getMap(String newToken){         //token         String tokenUserInfo = StringUtils.substringBetween(newToken, ".");         Base64UrlCodec base64UrlCodec = new Base64UrlCodec();         byte[] tookenBytes = base64UrlCodec.decode(tokenUserInfo);         String tookenJson = null;         try {             tookenJson = new String(tookenBytes, "UTF-8");         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         }         Map map = JSON.parseObject(tookenJson, Map.class);         return map;     } }
  import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;  @Configuration public class WebMvcConfigration  extends WebMvcConfigurerAdapter{     @Autowired     AuthInterceptor authInterceptor;      @Override     public void addInterceptors(InterceptorRegistry registry) {         registry.addInterceptor(authInterceptor).addPathPatterns("/**");         super.addInterceptors(registry);     } }
转载请标明出处:SSO单点登录
文章来源: SSO单点登录
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!