Реализация безопасности Grails

grails

47 просмотра

2 ответа

Я сделал следующий контроллер. Я могу войти и выйти, но как я могу заставить пользователя войти первым? Мне нужно начать сеанс при входе в систему и прекратить его при выходе из системы.

class UserController {
   def scaffold = User
   def login = {}
   def authenticate = {
      def user = User.findByLoginAndPassword(params.login, params.password)
      if(user){
         session.user = user
         flash.message = "Hello ${user.name}!"
         redirect(controller:"entry", action:"list")      
      } else {
         flash.message = "Sorry, ${params.login}. Please try again."
         redirect(action:"login")
      }
   }

   def logout = {
      flash.message = "Goodbye ${session.user.name}"
      session.user = null
      redirect(controller:"entry", action:"list")      
   }  
}
Автор: Sadams Источник Размещён: 08.11.2019 11:22

Ответы (2)


1 плюс

Выбор 1:

Для защиты приложения Grail доступно несколько плагинов безопасности.

Самым популярным из них является «Spring Security Core Plugin», который заставит пользователя войти в систему, прежде чем получить доступ к вашему защищенному ресурсу.

Ссылка Ссылка: http://grails.org/plugin/spring-security-core

Выбор 2:

Но если вы не хотите использовать какой-либо внешний плагин для вашего приложения (я бы предложил использовать его), вы можете воспользоваться «Фильтрами» в Grail's.

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

Пример :

class SecurityFilterFilters {

    def filters = {
        loginCheck(controller: 'Your_controller_name(if many separate them with pipe(|) )', action: "*") {
            before = {
                //check if user is logged in(if yes then there will be session.user) and action is not login action 
                if (!session.user && !actionName.equals('login')) {
                    //user is not logged in so redirect him to login page
                    redirect(controller: 'user', action: 'login')
                    return false
                }
            }
        }
    }
}

Ссылка Ссылка: http://docs.grails.org/2.2.1/ref/Plug-ins/filters.html

Автор: Prakash Thete Размещён: 20.08.2016 04:53

0 плюса

См. Документацию к плагину Spring-Security-Core для защищенной аннотации для Grails.

https://grails-plugins.github.io/grails-spring-security-core/v3/

Автор: Joe Jadamec Размещён: 20.08.2016 03:19
Вопросы из категории :
32x32