Play Framework Аутентификация пользователя / Членство - PullRequest
8 голосов
/ 27 февраля 2011

Я хочу поддерживать аутентификацию пользователя в приложении Play.Это веб-приложение, и я думаю, что встроенный «безопасный» модуль слишком прост для моих нужд.Фактически, группа пользователей обсуждает, как на самом деле модуль Secure предназначен для демонстрационных целей.Тем не менее, как я могу разработать такую ​​систему?

По сути, приложение позволит пользователю войти в систему, и тогда у него будут свои собственные настройки и т. Д., Которые будут применены во всем приложении.Существуют некоторые страницы, которые могут просматривать не прошедшие проверку пользователи, но если клиент прошел проверку подлинности, то представление этих страниц будет другим.Довольно простая настройка, но большая часть документации относится только к простому защищенному модулю.

Ответы [ 4 ]

4 голосов
/ 02 марта 2011

Если ваше единственное специальное требование заключается в том, чтобы некоторые страницы были общедоступными, я получил ваш ответ: Play framework: как требовать входа в систему для некоторых действий, но не для всех . Я просто скопировал модуль Secure и сделал несколько небольших дополнений.

2 голосов
/ 28 февраля 2011

из ваших требований текущий модуль аутентификации кажется достаточным. Если нет, то, что я сделал для своего проекта:

  • Скопируйте классы из модуля (безопасный контроллер, аннотация, тег) в ваш проект
  • Расширение контроллера с добавлением дополнительных функций

У меня нет кода для размещения здесь примеров, но в целом я:

  • переименовал классы (поэтому извиняюсь, если я произношу одно имя, означающее другое, не помню исходные имена!)
  • добавлены методы в Secure Controller для обработки аутентификации OpenId и OAUth
  • добавлены методы поддержки в моей модели User, которая с использованием идентификатора службы (Google OpenId, Twitter ID и т. Д.) Возвращает существующего пользователя из БД с этим идентификатором, или, если он не существует, создает и возвращает нового пользователя связан с этим идентификатором.
  • добавил некоторые флаги (например, admin, supervisor и т. Д.) В класс User
  • изменил метод проверки в контроллере безопасности, чтобы он проверял значения аннотации с флагами пользователя. Нечто подобное (псевдокод)

    var ok: Boolean = false хорошо = хорошо || (annotation.value == "admin" && currentUser.isadmin) хорошо = хорошо || (annotation.value == "supervisor" && currentUser.issupervisor) ...

  • добавил аннотацию к соответствующим методам и добавил контроллер Secure (через @With) для классов, требующих проверки доступа

С этим у меня есть защищенная система, и она, кажется, работает довольно хорошо (пальцы скрещены: P)

2 голосов
/ 28 февраля 2011

Вы можете использовать PlayPlugins для этого.Я начал писать плагин, который мощно включал безопасность.Это миграция с BasisSecurity для Grails.На данный момент я не нахожу время для дальнейшего развития.Вы можете увидеть текущее состояние здесь https://code.launchpad.net/~opensource21/+junk/permsec.

1 голос
/ 28 февраля 2011

Не знаю, может ли это помочь вам, но посмотрите на модуль deadbolt для управления правами доступа к представлениям / контроллерам ...
http://www.playframework.org/modules/deadbolt-1.0/home

...