Forum: Ruby on Rails WebService and session

Posted by Olivier R. (olivier_r)
on 2013-02-26 05:06
(Received via mailing list)
Hello, I'm creating a serie of "WebServices" from a rails application so
that an iOS App will be able to communication with the WebApp. Basically
I'm creating functions that get a json request, analyse it and send a 
json
result...I've never done that before and I have a huge problem: I have 
no
idea how to manage session for WebServices. The idea is that a user log
from the iOS App to the WebApp using a webservice. I was able to create 
a
function that does the login but how do I do to remember the user next 
time
the App calls a webservice? In my WebApp it's pretty easy, I check the
session for user information but in that case I have no clue about what 
to
do...I thought of saving the session in a DB table but doesn't seems 
like
the best solution, is there any way a session can be loaded from a token 
or
something?
Posted by Olivier R. (olivier_r)
on 2013-02-26 05:07
(Received via mailing list)
Oh, I'm working with rails 2.3.5 btw...

El lunes, 25 de febrero de 2013 22:04:47 UTC-6, CiriusMex escribi:
Posted by Derek M (Guest)
on 2013-02-26 06:17
(Received via mailing list)
You probably want to assign some kind of Token/API Key to each user. You
can use that in your requests (be it in the request params or in the
header) and then authenticate in your controllers. I would look into the
"authenticate_or_request_with_http_token" method which checks your 
request
headers for the Token. Then in your iOS application, you can 'login' a 
user
by saving their API key (I'm unfamiliar with iOS...I know Android has
SharedPreferences and Database possibilities for storing data) and then
each time you need to use communicate with the Rails web service, pass 
that
Token in the headers or however you do it. I believe you do not need to
simulate/worry about 'sessions'.
Posted by Derek M (Guest)
on 2013-02-26 10:54
(Received via mailing list)
Now that I look into the http_token method I recommended, it doesn't 
look
like it was implemented until Rails 3.0 and you mentioned your on 2.3.5.
Taking that into account, there are other ways out to accomplish the 
same
thing if you go with the token-in-the-header approach. One that I can 
think
of is just pull out the token in the request header manually then do the
authentication.
Posted by Olivier R. (olivier_r)
on 2013-02-26 20:06
(Received via mailing list)
Ok, I added the token and it works just fine to authenticate the user 
each
time a webservice is called, the thing is using a session would be more
easy that to send all the data needed when a webservice is called (some 
of
them are pretty tricky), is there any way to create a retrieve a session
precedently created? With an id or something maybe? I google it but 
didn't
find any usefull answer...

El martes, 26 de febrero de 2013 03:53:18 UTC-6, Derek M escribi:
Posted by Olivier R. (olivier_r)
on 2013-02-26 20:08
(Received via mailing list)
Ok, I added the token and it works just fine to authenticate the user 
each
time a webservice is called, the thing is using a session would be much
easier than sendding all the data needed when a webservice is called 
(some
of them are pretty tricky), is there any way to retrieve a session
precedently created? With an id or something maybe? I google it but 
didn't
find any usefull answer...

El martes, 26 de febrero de 2013 03:53:18 UTC-6, Derek M escribi:
Posted by Olivier R. (olivier_r)
on 2013-02-26 20:43
(Received via mailing list)
Well, after looking further it seems that I would have to use a DB 
Session
Storage system as I though and I'd rather avoid this so I guess I'm just
gonna go with the token and that's it

El martes, 26 de febrero de 2013 13:06:59 UTC-6, CiriusMex escribi:
Posted by Derek M (Guest)
on 2013-02-27 06:05
(Received via mailing list)
If you're going to be using this verification everywhere, you could put
your Token verification in your ApplicationController as a before_filter
then you can always skip that for certain controller actions you don't 
need
it.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.