If you do that ( make a convenience method ) maybe one for 'forget' could be done at the same time?
I'm loving repoze.who now that I'm finally getting my head around it. Iain On Fri, Mar 12, 2010 at 8:55 PM, Tres Seaver <tsea...@palladion.com> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Chris Grindstaff wrote: > > Hi Tres, > > > > > >>> - Is there a traceback you can show us? > > > > Nope, there is no exception. > > > >>> - Are you using a more-or-less "stock" who.ini to configure the > >>> middleware? > > > > Yes - here it is. > > > > [plugin:form] > > # identificaion and challenge > > use = repoze.who.plugins.form:make_plugin > > login_form_qs = __do_login > > rememberer_name = auth_tkt > > #form = flows/templates/flows/login_form.html > > #formcallable = auth.views:login_form > > > > [plugin:mongo] > > use = repoze.who.plugins.mongo:make_plugin > > > > [plugin:auth_tkt] > > # identification > > use = repoze.who.plugins.auth_tkt:make_plugin > > secret = m...@secr3t > > cookie_name = flows > > secure = False > > include_ip = False > > > > [general] > > request_classifier = repoze.who.classifiers:default_request_classifier > > challenge_decider = repoze.who.classifiers:default_challenge_decider > > remote_user_key = REMOTE_USER > > > > [identifiers] > > # plugin_name;classifier_name:.. or just plugin_name (good for any) > > plugins = > > form;browser > > auth_tkt > > > > [challengers] > > # plugin_name;classifier_name:.. or just plugin_name (good for any) > > plugins = > > form;browser > > > > [authenticators] > > plugins = > > auth_tkt > > mongo > > > >>> - Are you sure the middleware is in your WSGI pipeline? > > > > Yes because if I uncomment the formcallable above it does work. I just > > wanted to use the API instead. > > > >> Or maybe the docs aren't clear enough: if you call 'remember', you have > >> to inject the headers returned by 'remember' into your response. > > > > Thanks - I tried that but without success. > > headers = get_api(request.environ).remember() > > print headers returns an empty list. > > > This is after you did: > > > request.environ['repoze.who.userid'] = form.data['login'] > > But you need ore information than that to do the 'remember'. > > OK, so in this mode, you are expecting one of the "identifier" plugins > (the auth_tkt one) to compute a 'Set-Cookie' header which will allow you > to authenticate on subsequent requests. Calling 'remember' on the API > essentially just asks the identifier plugin which identified the user > originally to do that job. > > In order to trigger that, you need to set up the 'repoze.who.identity' > in the environment as a mapping, holding all the information your > 'auth_tkt' plugin needs, as well as the key which tells the API to > consult that plugin. Somthing like: > > request.environ['repoze.who.identity'] = { > 'identifier': 'auth_tkt', > 'repoze.who.userid': form.data['login'], > } > headers = get_api(request.environ).remember() > > I base this on reading the code for both the API object's 'remember' > method and the 'remember' method of the 'auth_tkl' plugin. My guess is > that we need a convenience method which makes this simpler (more like > what you tried to do in the first place). > > > Tres. > - -- > =================================================================== > Tres Seaver +1 540-429-0999 tsea...@palladion.com > Palladion Software "Excellence by Design" http://palladion.com > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkubDI4ACgkQ+gerLs4ltQ6S0gCeKKuWT4ST4KOEF+cdsgT9sgIg > wx8AnAt2rT2mDVYrtvGsH8P0c6pdqOwD > =ooam > -----END PGP SIGNATURE----- > _______________________________________________ > Repoze-dev mailing list > Repoze-dev@lists.repoze.org > http://lists.repoze.org/listinfo/repoze-dev >
_______________________________________________ Repoze-dev mailing list Repoze-dev@lists.repoze.org http://lists.repoze.org/listinfo/repoze-dev