Я хотел бы, чтобы вход и выход из системы выполнялись на первой странице моего приложения Grails, и там отображались все сообщения об ошибках.У меня есть функция аутентификации, закодированная в моем домене пользователя вместе с функцией выхода из системы.После того, как кто-то входит в систему с помощью функции аутентификации, мне удается вернуть его на главный экран, выполнив перенаправление:
redirect(uri:"")
Если я сделаю то же самое с выходом из системы, я получаю сообщение об ошибке, когда страницаотображается, говоря, что не может найти объект пользователя.Ниже приведены выходные данные.
Ошибка 500: Выполнение действия [выход из системы] контроллера [com.thornglatch.pingo.UserController] вызвало исключение: Нет такого свойства: имя для класса: com.thornglatch.pingo.User Возможные решения: сервлет игр: URI grails: /Pingo/grails/user/logout.dispatch Сообщение об исключении: Нет такого свойства: имя для класса: com.thornglatch.pingo.User Возможные решения: игры Причина: Нет такого свойства: имя для класса:com.thornglatch.pingo.User Возможные решения: игры Класс: UserController На линии: [25]
Вот то, что он пытается отрендерить, я считаю:
<div id="menu">
<nobr>
<g:if test="${session.user}">
<b>${session.user?.firstName} ${session.user?.lastName}</b> |
<g:link controller="user" action="logout">Logout</g:link>
</g:if>
<g:else>
<g:link controller="user" action="login">Login</g:link>
</g:else>
</nobr>
</div>
Спасибо заВаше время и внимание.
Вот код аутентификации:
def authenticate = {
println "Authenticate Entered"
def user = User.findByLoginAndPassword(params.login, params.password)
println "User = [" + user + "]"
if (user) {
session.user = user
def name = user.firstName ?: user.lastName
flash.message = "Hello ${user.login}"
redirect(uri:"")
} else {
println "Should be saying sorry"
flash.message = "Sorry, ${params.login}. Please try again.}"
redirect(uri:"")
}
} // authenticate
Эта версия работает.В том, что не было, строка flash.message была:
flash.message = "Hello ${name}"
Я могу с этим смириться, но хотел бы знать, почему использование имени не сработало.