Я защитил свое приложение Grails с помощью плагина ACEGI и использую аннотации к моим методам контроллера, чтобы предложить пользователю войти в систему.
Мое приложение имеет статическую HTML-страницу с ссылкой для входа в систему, которая перенаправляет на страницу login/auth
. При успешном входе в систему я хочу загрузить собственную пользовательскую страницу для аутентифицированного пользователя с именем person/mainpage
.
В моем LoginController
есть следующий код ...
def index = {
if (isLoggedIn()) {
redirect uri: '/'
}
else {
redirect action: auth, params: params
}
}
/**
* Show the login page.
*/
def auth = {
nocache response
if (isLoggedIn()) {
redirect uri: '/'
return
}
String view
String postUrl
def config = authenticateService.securityConfig.security
if (config.useOpenId) {
view = 'openIdAuth'
postUrl = "${request.contextPath}/login/openIdAuthenticate"
}
else if (config.useFacebook) {
view = 'facebookAuth'
postUrl = "${request.contextPath}${config.facebook.filterProcessesUrl}"
}
else {
view = 'auth'
postUrl = "${request.contextPath}${config.filterProcessesUrl}"
}
render view: view, model: [postUrl: postUrl]
}
Это перенаправляет успешный вход обратно на главную страницу приложения (/), а это не то, что я хочу. Погуглив некоторое время, я обнаружил, что могу определить цель по умолчанию для своей аутентификации в securityconfig.groovy
, как это ..
defaultTargetUrl = "/person/mainpage"
Мой вопрос заключается в том, как определить, какой пользователь вошел в систему, когда я выполняю свое действие mainpage
в моем PersonController
?
Сначала я изменил свое действие индексации в LoginController, чтобы перенаправить на мою страницу следующим образом ...
def index = {
if (isLoggedIn()) {
redirect controller: person, action: mainpage, params: params
}
else {
redirect action: auth, params: params
}
}
, но идентификатор зарегистрированного пользователя не появляется в params
(что, я думаю, меня устраивает, потому что кажется невероятным возможность поднимать страницы, просто определяя идентификатор строки пользователя в качестве параметра URL) .
Так, как правильно это сделать? По сути, я хочу, чтобы мое действие person/mainpage
могло разрешить текущего пользователя, вошедшего в систему.