Grails хранит количество страниц в сеансе

Я новичок в граалях. Недавно я использовал сеанс в своем контроллере. Но только на одну страницу. Теперь я хочу использовать сеанс для нескольких страниц. Но я понятия не имею, как это сделать. Вот мой код ниже, который работает для одной страницы. Может ли кто-нибудь помочь мне в этом?

def index() {
    def user = springSecurityService.currentUser
    if (user){
        redirect(controller: 'admistratorAction', action: 'createUser')
    }else{
        redirect(controller: 'login', action: 'index')
    }

}

person Sumon Bappi    schedule 30.06.2013    source источник
comment
Можете ли вы уточнить, что вы подразумеваете под использованием сеанса на одной странице? Можете ли вы опубликовать часть, которую вы используете для сеанса?   -  person Alidad    schedule 30.06.2013
comment
@Alidad Я имею в виду, что если пользователь вошел в систему, он может перейти на страницу createUser, иначе нет. И он отлично работает по вышеуказанным кодам. Теперь я хочу сделать это для более чем одного просмотра, не записывая его каждый раз. Я хочу, чтобы ты понял.   -  person Sumon Bappi    schedule 01.07.2013


Ответы (2)


Возможно, вы новичок в Grails, надеюсь, вы не новичок в Сессия HTTP. :)

Информация о сеансе ограничена только текущим веб-приложением (ServletContext), поэтому информация, хранящаяся в одном контексте, не будет видна напрямую в другом.

Пока вы находитесь в одном и том же ServletContext, вы должны иметь прямой доступ к переменной сеанса. Также посмотрите Servlet API в Grails.

@Alidad- Вернитесь к последнему вопросу из OP.

person dmahapatro    schedule 30.06.2013

В этом случае вы можете воспользоваться преимуществами фильтра Grails, чтобы делать проверку перед выполнением каждого действия. Как упоминалось в dmahapatro, вы можете использовать сеанс в своем приложении для хранения объекта пользователя, и с помощью этого фильтра вы можете выполнить проверку перед любым действием.

Что-то вроде этого может помочь вам достичь этого.:

class SecurityFilters {
    def filters = {
        loginCheck(controller: '*', action: '*') {
            before = {
                if (!session.user)) {
                    redirect(action: 'login')
                    return false
                }
            }
        }
    }
}
person Alidad    schedule 01.07.2013