Использование как CRUD, так и модуля Secure в Play Framework - PullRequest
1 голос
/ 06 марта 2012

Мне интересно, как использовать CRUD с модулем Secure без защиты всего контроллера.

У меня есть модель BlogPost с контроллером с именем BlogPosts. Поскольку я хочу, чтобы администраторы могли использовать бэк-офис CRUD для создания, обновления и удаления сообщений, контроллер расширяет CRUD и использует Secure:

@With(Secure.class)
public class BlogPosts extends CRUD {

}

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

Так, как лучше всего это сделать?

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Просто получите BlogPost предметы через JPA в вашем другом контроллере:

public static void listBlogs() {
    render(BlogPost.findAll());
}
2 голосов
/ 06 марта 2012

Вы можете написать свой собственный метод @Before, который вызывает проверку безопасности для всех методов, кроме list .Что-то вроде:

   @Before(unless="list")
   public static void before() {
      // Do security check
   }

Это будет не так удобно, как аннотация, но будет работать.

См. Документацию

РЕДАКТИРОВАТЬ КОММЕНТАРИЙ, ЧТОБЫ УТОЧНИТЬ

Я вижу, что ответ был немного двусмысленным.Идея состоит в том, чтобы удалить аннотацию @With() и создать свой собственный локальный метод @Before, который будет выполняться для всех методов , за исключением list.Затем этот метод может делегировать обработку Secure.before (так как это статический метод без параметров)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...