@Check не работает, когда действие вызывается из другого действия - PullRequest
2 голосов
/ 05 июля 2011

У меня есть действие в контроллере, защищенное аннотацией @Check.

@With(Secure.class)
public class Application extends Controller {

    @Check("admin")
    public static void securedMethod() {
        //secured code
    }

Когда я вызываю это действие из браузера, оно вызывает логическую проверку (профиль String) из класса Security. Но когда я вызываю это действие из другого действия:

Application.securedMethod();

он просто вызывает защищенный код, исключая вызов Security.check (). Я подумал, что @Check не должен разрешать выполнение securedMethod (), если Security.check () не вернет true. Любые идеи, как я могу заставить его вести себя так?

1 Ответ

4 голосов
/ 05 июля 2011

Причина в том, как работает безопасный контроллер.Аннотация @Check проверяется только в начале запроса с помощью метода, аннотированного @Before.Вы можете увидеть, как это делается в примере кода.

Обычно это не должно быть проблемой, так как не следует вызывать метод с большими ограничениями, чем метод с меньшими ограничениями безопасности (поскольку это может привести к проблемам с безопасностью),В вашем случае вам следует проверить рабочий процесс, который вы используете, так как вы можете избежать этого вызова.

...