Этот код не является полным. Контроллер предполагает, что у вас есть способ идентифицировать текущего пользователя, вошедшего в систему. Неявно строка 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 в действии .