通过获取类的RequestMapping注解来判断当前请求是否需要登录

This commit is contained in:
zengqiao
2021-04-14 19:40:19 +08:00
committed by PengShuaixin
parent 8f10624073
commit e6dd1119be
4 changed files with 40 additions and 13 deletions

View File

@@ -16,5 +16,5 @@ public interface LoginService {
void logout(HttpServletRequest request, HttpServletResponse response, Boolean needJump2LoginPage);
boolean checkLogin(HttpServletRequest request, HttpServletResponse response);
boolean checkLogin(HttpServletRequest request, HttpServletResponse response, String classRequestMappingValue);
}

View File

@@ -63,19 +63,16 @@ public class LoginServiceImpl implements LoginService {
}
@Override
public boolean checkLogin(HttpServletRequest request, HttpServletResponse response) {
String uri = request.getRequestURI();
if (uri.contains("..") || uri.contains("./") || uri.contains("///")) {
LOGGER.error("class=LoginServiceImpl||method=checkLogin||msg=uri illegal, contains .. or ./ or ///||uri={}", uri);
public boolean checkLogin(HttpServletRequest request, HttpServletResponse response, String classRequestMappingValue) {
if (ValidateUtils.isNull(classRequestMappingValue)) {
LOGGER.error("class=LoginServiceImpl||method=checkLogin||msg=uri illegal||uri={}", request.getRequestURI());
singleSignOn.setRedirectToLoginPage(response);
return false;
}
uri = uri.replaceAll("//", "/");
if (uri.equals(ApiPrefix.API_V1_SSO_LOGIN)
|| uri.equals(ApiPrefix.API_V1_SSO_LOGOUT)
|| uri.startsWith(ApiPrefix.API_V1_THIRD_PART_PREFIX)
|| uri.startsWith(ApiPrefix.GATEWAY_API_V1_PREFIX)) {
if (classRequestMappingValue.equals(ApiPrefix.API_V1_SSO_PREFIX)
|| classRequestMappingValue.equals(ApiPrefix.API_V1_THIRD_PART_PREFIX)
|| classRequestMappingValue.equals(ApiPrefix.GATEWAY_API_V1_PREFIX)) {
// 白名单接口直接true
return true;
}