|
@@ -1,20 +1,12 @@
|
|
|
package com.diagbot.config.security;
|
|
|
|
|
|
import com.diagbot.client.UserServiceClient;
|
|
|
-import com.diagbot.dto.RespDTO;
|
|
|
-import com.diagbot.entity.Token;
|
|
|
-import com.diagbot.exception.CommonErrorCode;
|
|
|
-import com.diagbot.util.HttpUtils;
|
|
|
-import com.diagbot.util.StringUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.AccessDecisionManager;
|
|
|
import org.springframework.security.access.AccessDeniedException;
|
|
|
import org.springframework.security.access.ConfigAttribute;
|
|
|
-import org.springframework.security.authentication.AccountExpiredException;
|
|
|
import org.springframework.security.authentication.InsufficientAuthenticationException;
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
-import org.springframework.security.core.GrantedAuthority;
|
|
|
-import org.springframework.security.web.FilterInvocation;
|
|
|
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -33,40 +25,40 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
|
|
|
|
|
|
@Override
|
|
|
public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
|
|
|
- HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
|
|
|
- String url, method;
|
|
|
- if (matchPermitAllUrl(request)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- if ("anonymousUser".equals(authentication.getPrincipal())) {
|
|
|
- throw new AccessDeniedException("no right");
|
|
|
- } else {
|
|
|
- //验证token有效性
|
|
|
- String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
|
|
|
- if (StringUtil.isNotEmpty(tokenStr)) {
|
|
|
- Token token = new Token();
|
|
|
- tokenStr = tokenStr.replaceFirst("Bearer ", "");
|
|
|
- token.setToken(tokenStr);
|
|
|
- RespDTO<Boolean> res = userServiceClient.verifyToken(token);
|
|
|
- if (res == null || !CommonErrorCode.OK.getCode().equals(res.code)) {
|
|
|
- throw new AccountExpiredException("token expire");
|
|
|
- }
|
|
|
- if (!res.data) {
|
|
|
- throw new AccountExpiredException("token expire");
|
|
|
- }
|
|
|
- }
|
|
|
- for (GrantedAuthority ga : authentication.getAuthorities()) {
|
|
|
- String[] authority = ga.getAuthority().split(";");
|
|
|
- url = authority[0];
|
|
|
- method = authority[1];
|
|
|
- if (matchers(url, request)) {
|
|
|
- if (method.equals(request.getMethod()) || "ALL".equals(method)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- throw new AccessDeniedException("no right");
|
|
|
+// HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
|
|
|
+// String url, method;
|
|
|
+// if (matchPermitAllUrl(request)) {
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// if ("anonymousUser".equals(authentication.getPrincipal())) {
|
|
|
+// throw new AccessDeniedException("no right");
|
|
|
+// } else {
|
|
|
+// //验证token有效性
|
|
|
+// String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
|
|
|
+// if (StringUtil.isNotEmpty(tokenStr)) {
|
|
|
+// Token token = new Token();
|
|
|
+// tokenStr = tokenStr.replaceFirst("Bearer ", "");
|
|
|
+// token.setToken(tokenStr);
|
|
|
+// RespDTO<Boolean> res = userServiceClient.verifyToken(token);
|
|
|
+// if (res == null || !CommonErrorCode.OK.getCode().equals(res.code)) {
|
|
|
+// throw new AccountExpiredException("token expire");
|
|
|
+// }
|
|
|
+// if (!res.data) {
|
|
|
+// throw new AccountExpiredException("token expire");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// for (GrantedAuthority ga : authentication.getAuthorities()) {
|
|
|
+// String[] authority = ga.getAuthority().split(";");
|
|
|
+// url = authority[0];
|
|
|
+// method = authority[1];
|
|
|
+// if (matchers(url, request)) {
|
|
|
+// if (method.equals(request.getMethod()) || "ALL".equals(method)) {
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// throw new AccessDeniedException("no right");
|
|
|
}
|
|
|
|
|
|
|