> Is the login mechanism relying on web application form based
> submission, or relying on web server HTTP Basic authentication. If the
> latter, you must enable the directive:
>
>   WSGIPassAuthorization On
>
> in Apache configuration for mod_wsgi, else the HTTP Basic auth
> information isn't passed through to a WSGI application.
>
> Graham
>


The login mechanism is web application form based submission, done in flex,
which is embedded in a django page, which is served by mod_wsgi.

That is, I have a flex UI submitting username, raw_password through an AMF
gateway.

== myflex.mxml ==

private function handleLogin(username,raw_password):void
{
      gatewayUrl = "https://www.mysite.com/main/gateway";;
      var serviceName:String = "authService";
      var serviceFactory:ServiceFactory = ServiceFactory.getInstance
(gatewayUrl);
      var service:RemotingService = serviceFactory.getService(serviceName);
      var pc:PendingCall = service.authenticateVisitor(your_login,
raw_password); // ties to django views.py method
}

== views.py ==

def authenticateVisitor(request, this_email, raw_password):
    if request.user.is_authenticated() == True
        return "Already authenticated" # <--- This return statement is never
reached, even if this method is called twice
    this_user = auth.authenticate(email=this_email,password=raw_password) #
using custom EmailBackend
    if this_user is not None:
        auth.login(request,this_user)
        return True
    else:
        return False


-R



On 11/1/07, Graham Dumpleton <[EMAIL PROTECTED]> wrote:
>
>
>
>
> On Oct 30, 9:22 pm, "Tiger Uppercut" <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I wasn't sure whether this was a djangoAMF issue or django, so apologies
> for
> > the double posting.
> >
> > I'm having trouble using djangoAMF to communicate between my flex UI and
> my
> > django site, django_wrapper.
> >
> > - My django_wrapper is served at /main by mod_wsgi.
> >
> > * The django code base is in /usr/local/deploy/django_wrapper
> > * The wsgi script is in
> > /usr/local/deploy/django_wrapper/apache/django_wrapper.wsgi [as noted
> onhttp://code.google.com/p/modwsgi/wiki/IntegrationWithDjango]
> >
> > - My flex site is served at /main/flex by django.  The swf is stored at
> > /var/www/mysite.com/static/myflex.swf
> >
> > - My djangoAMF gateway is set up at /main/gateway
> >
> > == urls.py ==
> >
> >      (r'^main/gateway/authService/authenticateVisitor',
> >
> > > 'django_wrapper.views.authAndLoginVisitor'),
> > >      (r'^main/gateway/calcService/calcSum',
> > > 'django_wrapper.views.calculate'),
> >
> > == views.py ==
> >
> > def authAndLoginVisitor(request,this_email,raw_password):
> >
> >
> >
> > >     if request.user.is_authenticated() == True:
> > >         return "Already authenticated!"
> >
> > >     this_user = auth.authenticate (email=this_email,
> > > password=raw_password) # modified from django.contrib.auth to use
> > > EmailBackend
> > >     if this_user is None: # could not find the
> > > user
> >
> > >         return False
> > >     else: # did find the user, now let's log him
> > > in
> >
> > >         auth.login(request,this_user)
> > >         return True
> >
> > > def calculate(request,arg1,arg2):
> > >     if request.user is not None:
> > >         print "In calculate, request.user is not none, it is = " +
> str(
> > > request.user)
> > >     if request.user.is_authenticated() == True:
> > >         return arg1 + arg2
> > >     else:
> > >         return "Not authenticated!"
> >
> > The calculate function is called by the flex wrapper after
> > authAndLoginVisitor is successfully called.
> >
> > == mysite.mxml ==
> >
> > var gatewayUrl:String = "https://www.mysite.com/main/gateway/";;
> >
> >
> >
> > > var serviceName:String = "calcService";
> > > var serviceFactory:ServiceFactory = ServiceFactory.getInstance
> > > (gatewayUrl);
> > > var service:RemotingService = serviceFactory.getService(serviceName);
> >
> > > var pc:PendingCall = service.calcSum(2, 3);
> > > pc.responder = new Responder(handleResult, handleError);
> >
> > However, the calculate function keeps thinking that the request is
> issued by
> > an anonymous user.
> >
> > I added debugging code to the login() method of  auth/__init__.py
> >
> > [Tue Oct 30 01:32:31 2007] [error] User status just set
> > [Tue Oct 30 01:32:31 2007] [error] request.session[_auth_user_id] = 11
> > [Tue Oct 30 01:32:31 2007] [error] request.session[_auth_user_backend] =
> > django_wrapper.backends.EmailBackend
> > [Tue Oct 30 01:32:31 2007] [error] Set request.user = testuser
> >
> > So the request.user is set once login is called.  When I look in my
> > auth_user table in the database, testuser's last_login is correctly set,
> as
> > well.
> >
> > However, now fast forward to the calculate call.  Recall that I have a
> flex
> > UI, so the actual URL in the browser
> windowwww.mysite.com/main/flexappears
> > the same.
> >
> > When I call this function calculate request.user shows up as anonymous:
> > [Tue Oct 30 02:52:36 2007] [error] In calculate, request.user is not
> none,
> > it is = AnonymousUser
> > [Tue Oct 30 02:57:33 2007] [error] <WSGIRequest
> > [Tue Oct 30 02:57:33 2007] [error] GET:<QueryDict: {}>,
> > [Tue Oct 30 02:57:33 2007] [error] POST:<QueryDict:
> >
> {u'\\x00\\x03\\x00\\x00\\x00\\x01\\x00\\x13calcService.calcSum\\x00\\x02/[EMAIL
>  PROTECTED]@\\x08\\x00\\x00\\x00\\x00\\x00\\x00':
> > [u'']}>,
> > [Tue Oct 30 02:57:33 2007] [error] COOKIES:{'sessionid':
> > 'c9726aabf90079d7cb9bbf549b6fc8c4'},
> > ...
> > [Tue Oct 30 02:57:33 2007] [error]  'HTTP_COOKIE':
> > 'sessionid=c9726aabf90079d7cb9bbf549b6fc8c4',
> >
> > Any ideas why the request keeps showing up without the user credentials
> set
> > in the login method earlier?
> >
> > Note that, if I apply a decorator, login_required, to calcService, and
> login
> > through the standard django html form, the request has my correct
> > credentials.  It's just when I try to do it "by hand", I'm running into
> this
> > problem.
>
> Is the login mechanism relying on web application form based
> submission, or relying on web server HTTP Basic authentication. If the
> latter, you must enable the directive:
>
>   WSGIPassAuthorization On
>
> in Apache configuration for mod_wsgi, else the HTTP Basic auth
> information isn't passed through to a WSGI application.
>
> Graham
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to