Получение аннотаций метода выполнения в перехватчике - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть некоторые действия, которые требуют определенного разрешения пользователя для доступа, поэтому я создал аннотацию метода @RequiredPermission и перехватчик, чтобы проверить, есть ли метод, который будет выполняться, или нет аннотация, и если он проверил, еслизарегистрированный пользователь имеет разрешение.

Проблема в том, что я не знаю, как получить эту информацию из ActionInvocation и ни из ActionContext.

Я уверен, что это должен быть один из способовсделайте это, потому что если нет, я бы сказал, что это, вероятно, не очень хорошая структура для работы.

Любой совет?

1 Ответ

4 голосов
/ 07 ноября 2011

Необходимая информация содержится в ActionProxy, доступном через ActionInvocation.getProxy().

Получив прокси-сервер, вы получаете доступ к самому действию (из ActionInvocation) и к имени метода (ActionProxy.getMethod()) в виде строки.

С этого момента это нормальное отражение Java.

Method method = action.getClass().getDeclaredMethod(actionmethod);
RequiredPermission permission = method.getAnnotation(RequiredPermission.class);
if (sessionUser.inRoles(permission.getRoles()) {
    return invocation.invoke();
}

return Constants.LOGIN_REQUIRED_RESULT;

Или, как вы хотите, справиться с реальной логикой.

...