Я пытаюсь сохранить переменную в Grails сессии действия одного контроллера:сессия не работает в Граалей
def requestLogin = {
def twitterClient = new TwitterFactory().getInstance()
def returnUrl = g.createLink(controller: 'twitterLogin', action: 'processLogin', absolute:true).toString()
log.debug "Generating request with return url of [${returnUrl}]"
println "Generating request with return url of [${returnUrl}]"
def requestToken = twitterService.generateRequestToken(twitterClient, returnUrl)
session["twitter"] = twitterClient
session["requestToken"] = requestToken
redirect(url:requestToken.getAuthorizationURL())
}
Теперь, как можно ясно видеть, session["requestToken"]
является хранение requestToken
. Это явно не является нулевым, поскольку URL-адрес перенаправления работает нормально.
Но когда он возвращается в обратный вызов (от Twitter OAuth страницы) действия в том же контроллере:
def processLogin = {
log.debug "Processing Login Return from Twitter"
if ((!session.requestToken) || (!params.oauth_verifier)) {
redirect(action: 'twitterFailedAuthentication')
} else {
//accessToken has properties token and tokenSecret which can be persisted
def accessToken = session.twitter.getOAuthAccessToken(session.requestToken, params.oauth_verifier)
session.twitterToken=accessToken.token
session.twitterTokenSecret=accessToken.tokenSecret
def twitterClient=twitterService.getTwitterClient(accessToken)
log.debug "Attempting validate..."
def twitterUser = twitterClient.showUser(twitterClient.getScreenName())
log.debug "Validate successful for ${twitterUser.screenName}"
session.user = twitterUser
redirect(action: displayDetails)
}
}
session.requestToken
дает нулевой !!
Почему это происходит, и если да, то каково решение для хранения значений в сеансе должным образом?
EDIT: Я не использую плагин аутентификации, например, весеннюю безопасность или сиро. Вот мои buildConfig.groovy зависимости:
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
//build 'org.twitter4j:twitter4j:4.0.2'
//build 'org.facebook4j:facebook4j-core:2.1.0'
// runtime 'mysql:mysql-connector-java:5.1.22'
runtime 'postgresql:postgresql:9.1-901-1.jdbc4'
}
plugins {
runtime ":hibernate:$grailsVersion"
runtime ":jquery:1.8.3"
runtime ":resources:1.1.6"
// Uncomment these (or add new ones) to enable additional resources capabilities
//runtime ":zipped-resources:1.0"
//runtime ":cached-resources:1.0"
//runtime ":yui-minify-resources:0.1.5"
build ":tomcat:$grailsVersion"
runtime ":database-migration:1.3.2"
runtime ":rest:0.7"
runtime ':twitter-bootstrap:2.3.0'
compile ':cache:1.0.1'
compile ":mail:1.0.7"
compile ":heroku:1.0.1"
compile ":cloud-support:1.0.11"
compile ":lesscss-resources:1.3.3"
}
У меня нет действия для входа. Я не пользуюсь весной. Infact, у меня нет плагина аутентификации. – rahulserver
Это то, что вам нужно было бы сделать в 1-м месте: описать свою природу! – injecteer
см. Редактирование. Дайте мне знать, если вам потребуется больше, чтобы «описать вашу окружающую среду!» – rahulserver