2013-12-03 1 views
0

Сегодня я попытался выяснить, как использовать R-пакет RCurl для входа в мое приложение grails, в котором используется плагин Spring Security, а не базовая аутентификация. Я хотел выяснить, как войти на сайт, чтобы загрузить некоторые данные. На консоли это, кажется, легко работать, как это:Как использовать RCurl для аутентификации в приложении весны security/grails

curl -d j_username=user -d j_password=password -L http://localhost:8080/appName/j_spring_security_check 

Однако RCurl эквивалент, как это не удается:

require(RCurl) 
authenticateUrl = paste(baseUrl, "j_spring_security_check", sep="") 

cat(paste("trying to authenticate user", user)) 
agent="Mozilla/5.0" 

#Set RCurl pars 
curl = getCurlHandle() 
curlSetOpt(ssl.verifypeer=FALSE, timeout=60, cookiefile="cookies.txt", 
cookiejar="cookies.txt", useragent = agent, 
followlocation = TRUE, curl=curl, verbose=verbose) 

#Post login form 
postForm(authenticateUrl, .params= list(j_username="user", j_password="password"),  
curl=curl, style="POST") 

Вместо успешного входа в систему, я перенаправлены на страницу auth_fail.

ответ

1

Оказалось, что нужно сначала вызвать страницу входа в систему. Я предполагаю, что это имеет какое-то отношение к JSESSIONID, который хранится в файле cookie. Если я добавлю этот шаг перед вызовом postForm, все будет работать нормально:

loginUrl = paste(baseUrl, "login/auth", sep="") 
getURL(loginUrl, curl=curl) 

 Смежные вопросы

  • Нет связанных вопросов^_^