修复类匿名注解访问失效问题

master
RuoYi 2024-12-11 12:38:57 +08:00
parent 6bc1a6aeb1
commit 4aac0058ea
1 changed files with 54 additions and 36 deletions

View File

@ -46,47 +46,65 @@ public class PermitAllUrlProperties implements InitializingBean, ApplicationCont
{ {
beanClass = bean.getClass(); beanClass = bean.getClass();
} }
RequestMapping base = beanClass.getAnnotation(RequestMapping.class); // 处理类级别的匿名访问注解
String[] baseUrl = {}; if (beanClass.isAnnotationPresent(Anonymous.class))
if (Objects.nonNull(base))
{ {
baseUrl = base.value(); RequestMapping baseMapping = beanClass.getAnnotation(RequestMapping.class);
} if (Objects.nonNull(baseMapping))
Method[] methods = beanClass.getDeclaredMethods();
for (Method method : methods)
{
if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(RequestMapping.class))
{ {
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class); String[] baseUrl = baseMapping.value();
String[] uri = requestMapping.value(); for (String url : baseUrl)
urls.addAll(rebuildUrl(baseUrl, uri)); {
} urls.add(prefix(url) + "/*");
else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(GetMapping.class)) }
{ continue;
GetMapping requestMapping = method.getAnnotation(GetMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PostMapping.class))
{
PostMapping requestMapping = method.getAnnotation(PostMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(PutMapping.class))
{
PutMapping requestMapping = method.getAnnotation(PutMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(Anonymous.class) && method.isAnnotationPresent(DeleteMapping.class))
{
DeleteMapping requestMapping = method.getAnnotation(DeleteMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
} }
} }
// 处理方法级别的匿名访问注解
Method[] methods = beanClass.getDeclaredMethods();
for (Method method : methods)
{
if (method.isAnnotationPresent(Anonymous.class))
{
RequestMapping baseMapping = beanClass.getAnnotation(RequestMapping.class);
String[] baseUrl = {};
if (Objects.nonNull(baseMapping))
{
baseUrl = baseMapping.value();
}
if (method.isAnnotationPresent(RequestMapping.class))
{
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(GetMapping.class))
{
GetMapping requestMapping = method.getAnnotation(GetMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(PostMapping.class))
{
PostMapping requestMapping = method.getAnnotation(PostMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(PutMapping.class))
{
PutMapping requestMapping = method.getAnnotation(PutMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
else if (method.isAnnotationPresent(DeleteMapping.class))
{
DeleteMapping requestMapping = method.getAnnotation(DeleteMapping.class);
String[] uri = requestMapping.value();
urls.addAll(rebuildUrl(baseUrl, uri));
}
}
}
} }
} }