Web services and login?


#1

Has anyone managed to do this? I thought about using sessions but they
dont want to work for me… Here’s what I’m doing as a little test:

class NotLoggedIn < Exception

end

class ProjectsController < ApplicationController
wsdl_service_name ‘Projects’
web_service_api ProjectsApi

def Login
@session[:loggedIn] = true
end

def GetProjects
if @session[:loggedIn]
return Project.find(:all)
else
raise NotLoggedIn, “You are not logged in!”
end
end

def CreateProject(name)
Project.create(:name => name)
return name << “Wee”
end
end

Nothing fancy, but doing

ProjectService.Login();
ProjectService.GetProjects();

in c#, gets a NotLoggedIn exception. Any ideas?


#2

To take a guess (since I’m exploring Web services from the other side of
things) I would expect that rails is using a cookie to maintain its
session.
In order for the second call to connect to the session in the rails
application the cookies that are set in the response to the first call (
ProjectService.Login()) need to be propagated back to the second call (
ProjectService.GetProjects()).

If this isn’t happening then the call to GetProjects will not see a
session
cookie and will create a new session.

I would expect that .Net does the session and cookie management
implicitly
on the client. But it would seem from what I’ve been reading that Java
doesn’t do this by default so maybe .Net is copying Java a little too
closely on this one.


#3

Ah, that would make sense I suppose. Well, what do you think about
having a list of currently logged in ips in a table? This app doesn’t
need to be hugely realtime (and I doubt I’ll have massive tables, beyond
a few meg even).

Unless you’ve got any other ideas?