I was able to resolve the crazy URL issue by downgrading authkit from r144 to r139, apparently the new construct_url() method doesn't work. Now at long last, database authentication seems to be working.
[EMAIL PROTECTED]:~/AuthKit$ svn log -r 144 ------------------------------------------------------------------------ r144 | thejimmyg | 2008-01-09 12:14:19 -0800 (Wed, 09 Jan 2008) | 1 line Added an alternative construct_url() method On Feb 14, 9:47 am, n1ywb <[EMAIL PROTECTED]> wrote: > OK I've made some progress. > > Previously I had simply copied sqlalchemy_04_driver.py into my > existing authkit 0.4 directory. It ocurred to me that maybe that > wasn't the way to do it. I checked out the latest AuthKit from SVN, > edited setup.py to use setuptools, and installed the egg. That > resolved the exception I was reporting previously. > > Now websetup.py works, I can successfully add users/roles etc. I did > have to tweak the example code somewhat, and I'm still not happy with > the way it's setting up the environ variable explicitly, isn't that > supposed to be in app_conf or something? > > Actual authentication ALMOST works but not quite. When I go to a > protected controller, AuthKit displays the sign in page correctly, but > when I submit my info it redirects to a crazy URL. > > I've created a controller called "auth" with a method called "private" > that is protected by an @authorize decorator. When I load "http:// > localhost:5000/auth/private" in my browser, I see the AuthKit sign in > form. When I enter info and click submit, regardless of what info I > enter, I am redirected to this URL: "http://localhost:5000/auth/:// > localhosthttps://localhost:5000/auth/private". There's something > screwy going on around here... > > On Feb 13, 1:33 pm, n1ywb <[EMAIL PROTECTED]> wrote: > > > Hi James, > > > I followed the given example and I'm getting "AttributeError: 'str' > > object has no attribute 'has_key'" but when I try to set up the > > authkit middleware in middleware.py. > > > It might be helpful if you could develop an sqlalchemy_04_driver > > example that actually uses Pylons... > > > In a slight aside, is there any reason why I can't use your > > SQLAlchemyManager thing for AuthKit and use a normal session for my > > own stuff at the same time? > > > Here's what I have: > > > # middleware.py > > from authkit.users import sqlalchemy_04_driver > > import authkit.authenticate > > > from authtest.model import setup_model > > from sqlalchemymanager import SQLAlchemyManager > > ... > > # AuthKit > > app = SQLAlchemyManager(app, app_conf, [setup_model, > > sqlalchemy_04_driver.setup_model]) > > app = authkit.authenticate.middleware(app, app_conf) > > ... > > > # development.ini > > ... > > # sqlalchemy bitches if I use default.url > > #sqlalchemy.default.url = sqlite:///%(here)s/quickwiki.db > > sqlalchemy.url = sqlite:///%(here)s/quickwiki.db > > > authkit.setup.method = form, cookie > > authkit.cookie.secret = secret string > > authkit.cookie.signoutpath = /auth/signout > > authkit.form.authenticate.user.type = > > authkit.users.sqlalchemy_04_driver:UsersFromDatabase > > authkit.form.authenticate.user.data = authtest.model > > ... > > > # model/__init__.py > > def setup_model(model, metadata, **p): > > pass > > > [EMAIL PROTECTED]:~/authtest$ paster serve --reload development.ini > > Starting subprocess with file monitor > > Traceback (most recent call last): > > File "/home/pylons/bin/paster", line 8, in <module> > > load_entry_point('PasteScript==1.3.6', 'console_scripts', 'paster') > > () > > File "/home/pylons/lib/python2.5/site-packages/PasteScript-1.3.6- > > py2.5.egg/paste/script/command.py", line 78, in run > > invoke(command, command_name, options, args[1:]) > > File "/home/pylons/lib/python2.5/site-packages/PasteScript-1.3.6- > > py2.5.egg/paste/script/command.py", line 117, in invoke > > exit_code = runner.run(args) > > File "/home/pylons/lib/python2.5/site-packages/PasteScript-1.3.6- > > py2.5.egg/paste/script/command.py", line 212, in run > > result = self.command() > > File "/home/pylons/lib/python2.5/site-packages/PasteScript-1.3.6- > > py2.5.egg/paste/script/serve.py", line 227, in command > > relative_to=base, global_conf=vars) > > File "/home/pylons/lib/python2.5/site-packages/PasteScript-1.3.6- > > py2.5.egg/paste/script/serve.py", line 250, in loadapp > > **kw) > > File "/home/pylons/lib/python2.5/site-packages/PasteDeploy-1.3.1- > > py2.5.egg/paste/deploy/loadwsgi.py", line 193, in loadapp > > return loadobj(APP, uri, name=name, **kw) > > File "/home/pylons/lib/python2.5/site-packages/PasteDeploy-1.3.1- > > py2.5.egg/paste/deploy/loadwsgi.py", line 214, in loadobj > > return context.create() > > File "/home/pylons/lib/python2.5/site-packages/PasteDeploy-1.3.1- > > py2.5.egg/paste/deploy/loadwsgi.py", line 606, in create > > return self.object_type.invoke(self) > > File "/home/pylons/lib/python2.5/site-packages/PasteDeploy-1.3.1- > > py2.5.egg/paste/deploy/loadwsgi.py", line 99, in invoke > > return fix_call(context.object, context.global_conf, > > **context.local_conf) > > File "/home/pylons/lib/python2.5/site-packages/PasteDeploy-1.3.1- > > py2.5.egg/paste/deploy/util/fixtypeerror.py", line 57, in fix_call > > val = callable(*args, **kw) > > File "/home/pylons/authtest/authtest/config/middleware.py", line 54, > > in make_app > > app = authkit.authenticate.middleware(app, app_conf) > > File "/home/pylons/lib/python2.5/site-packages/AuthKit-0.4.0- > > py2.5.egg/authkit/authenticate/__init__.py", line 452, in middleware > > prefix=prefix_, > > File "/home/pylons/lib/python2.5/site-packages/AuthKit-0.4.0- > > py2.5.egg/authkit/authenticate/form.py", line 131, in > > make_form_handler > > prefix='authkit.method.form', > > File "/home/pylons/lib/python2.5/site-packages/AuthKit-0.4.0- > > py2.5.egg/authkit/authenticate/form.py", line 114, in load_form_config > > format='basic' > > File "/home/pylons/lib/python2.5/site-packages/AuthKit-0.4.0- > > py2.5.egg/authkit/authenticate/__init__.py", line 191, in > > get_authenticate_function > > users = user_object(user_conf['data'], encrypt) > > File "/home/pylons/lib/python2.5/site-packages/AuthKit-0.4.0- > > py2.5.egg/authkit/users/sqlalchemy_04_driver.py", line 100, in > > __init__ > > if not environ.has_key('sqlalchemy.model') or not > > environ.has_key('sqlalchemy.session'): > > AttributeError: 'str' object has no attribute 'has_key' > > > On Dec 20 2007, 1:11 pm, James Gardner <[EMAIL PROTECTED]> wrote: > > > > Hi Enrico, > > > > > Now the it seems that the 'sqlalchemy_04_driver' have some problem > > > > with 'environ' object. > > > > Ahh, you've been caught out by the different API used by the 0.4 driver. > > > The first argument with the new API should be the WSGI environment. I > > > can see why this doesn't quite work in the way you were expecting. If > > > you do want to use this driver you'll need to setup the > > > SQLAlchemyMiddleware first like this example does: > > > >http://authkit.org/trac/browser/AuthKit/trunk/examples/user/database/... > > > > Note this isn't the currently recommended way of using SQLAlchemy with > > > Pylons, it is just the one I happen to like. > > > > You might be better off with Lythoner's version perhaps if that works > > > for you? > > > > Cheers, > > > > James --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To post to this group, send email to pylons-discuss@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/pylons-discuss?hl=en -~----------~----~----~----~------~----~------~--~---