2016-08-20 11 views
-1

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

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")  
    } 
} 
+0

Я думаю, что это поможет. Я думаю, вам нужен способ распознавания пользователей, которые заходят в систему http://stackoverflow.com/questions/38688075/request-map-direct-me-to-login-page-in-grails/38793608#38793608 – Vahid

+0

Исправлены ошибки грамматики, затянуты терминологию и форматирование с фиксированным кодом. – Prune

ответ

1

Choice 1:

Есть ряд плагинов безопасности для обеспечения вашей Приложение Грааля.

Наиболее популярным является «Плагин весеннего ядра безопасности», который заставит пользователя войти в систему до доступа к вашему обеспеченному ресурсу.

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

Выбор 2:

Но если вы не хотите использовать внешний модуль для вашего приложения (я бы предложил использовать один), вы можете воспользоваться «Фильтры» in 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

Смежные вопросы