Контроллер Play Framework с безопасными и небезопасными методами. Возможный? - PullRequest
5 голосов
/ 11 июля 2011

Я пытаюсь сделать сайт с игрой с участником и не-участником. Так что у меня есть контроллеры с членами и не членами методов. Но я могу сделать только весь контроллер безопасным [@With (Secure.class)]. Возможно ли сделать только несколько методов безопасными и получить доступ к другим без входа в систему?

Спасибо

Ответы [ 4 ]

3 голосов
/ 11 июля 2011

Да, вы можете, хотя это потребует некоторой настройки класса Secure.Если вы проверите @Secure, у него есть метод, аннотированный @Before.В соответствии с документацией вы можете указать, к каким методам применяется @Before, а для каких он пропускается.

@Before(unless="login")

Таким образом, будет не запускать @Before напубличные методы.Имейте в виду, что при использовании @With он может не работать должным образом, и вам может потребоваться создать собственный @Before в контроллере, который управляет безопасностью (вызывая надлежащие методы в secure).2 контроллера, один для защищенных пользователей и один для общедоступных методов.

2 голосов
/ 11 июля 2011

Вы можете использовать достаточно мощный модуль Deadbolt: http://www.playframework.org/modules/deadbolt

1 голос
/ 12 июля 2011

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

Secure.checkAccess();

С помощью этого метода вы можете даже использовать аннотацию @Check. Пример:

    @Check("member")
    public static void restrictedAction() {
        Secure.checkAccess();
        ...
    }
1 голос
/ 11 июля 2011

Нет, простого способа сделать это не существует. Вы можете проверить роли, но не подключен пользователь, посетитель.

Вы должны добавить @Before аннотации, и это будет немного сложно. Просто разбейте свой контроллер на несколько контроллеров. Кстати, функционально лучше делать это таким образом, а не смешивать публичные / частные методы.

...