текущие сессии в Grails - PullRequest
       0

текущие сессии в Grails

1 голос
/ 26 февраля 2012

Я новичок в Grails 2.0 Framework и пытаюсь следовать этому уроку http://grails.org/Simple+Avatar+Uploader.Я реализовал этот код, но я получаю сообщение об ошибке в UserController.groovy в этой строке 'def user = User.current (session)', поскольку 'Нет такого свойства.текущая сессия.Я ищу объяснение того, как это работает?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Этот код не является полным. Контроллер предполагает, что у вас есть способ идентифицировать текущего пользователя, вошедшего в систему. Неявно строка def user = User.current(session) предполагает, что вы определили метод current() для самого пользовательского класса, который принимает сеанс и предположительно использует какое-то поле, которое вы установили в нем, для извлечения пользователя. Это было бы глупо.

Обычный способ сделать это - создать собственный механизм аутентификации. Обратите внимание, что это наивная практика, и вы гораздо лучше используете Spring Security Core , если только вы не хотите оставить свое приложение открытым для зияющих дыр в безопасности . Но, для практики, что-то вроде:

def login = {
    //if you're stupid enough to store your passwords in plain text and not sanitize user inputs, you deserve to be hacked
    def user = User.findByPassword(params.password) 
    if(user){
       session.user = user
    }
}

Затем вы можете заменить ошибочную строку в руководстве (- def user = User.current(session) -) на

def user = session.user ?: new User(userid:"I'm a little teapot") 

Прежде чем идти дальше, вам, вероятно, захочется пройтись по этой бесплатной электронной книге по Grails , прежде чем вы продвинетесь намного дальше. Также настоятельно рекомендуем Grails в действии .

0 голосов
/ 26 февраля 2012

Когда я сталкивался с этим в прошлом, это потому, что я не импортировал класс, а Grails / Groovy думает, что я пытаюсь получить доступ к переменной с именем User, а не к методу класса.

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