Hi all,
I'm adding an authentication layer to my app and I'm trying to return an error
using the abort() function. It is causing an Internal Server error (500)
instead
of returning a proper error response. I've tried with both abort(401) and
abort(404). debug is set to false in my app config.
I found this irc discussion:
http://pylonshq.com/irclogs/%23pylons/%23pylons.2008-12-16.log.html but it
didn't shed much light on the issue. FWIW, I'm using pylons 0.9.6.1
Below is the code which aborts and my middleware setup, the stack trace from
paster is attached
in lib/base.py:
class BaseController(WSGIController):
def __call__(self, environ, start_response):
"""Invoke the Controller"""
# WSGIController.__call__ dispatches to the Controller method
# the request is routed to. This routing information is
# available in environ['pylons.routes_dict']
identity = environ.get('repoze.who.identity')
if not identity or not identity.strip():
abort(401)
return WSGIController.__call__(self, environ, start_response)
in config/middleware.py:
# Configure the Pylons environment
load_environment(global_conf, app_conf)
# The Pylons WSGI app
app = PylonsApp()
# CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
auth_required = app_conf.get('auth_required', 'true')
if asbool(auth_required):
# create the repoze.who authentication middleware
app = make_who_with_config(app, global_conf,
app_conf['who.config_file'],
app_conf['who.log_file'],
app_conf.get('who.log_level', 'debug'))
if asbool(full_stack):
# Handle Python exceptions
app = ErrorHandler(app, global_conf, error_template=error_template,
**config['pylons.errorware'])
# Display error documents for 401, 403, 404 status codes (and
# 500 when debug is disabled)
app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf)
# Establish the Registry for this application
app = RegistryManager(app)
# Static files
javascripts_app = StaticJavascripts()
static_app = StaticURLParser(config['pylons.paths']['static_files'])
app = Cascade([static_app, javascripts_app, app])
return app
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---
Exception happened during processing of request from ('127.0.0.1', 44090)
Traceback (most recent call last):
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/httpserver.py",
line 1068, in process_request_in_thread
self.finish_request(request, client_address)
File "/opt/lib/python2.6/SocketServer.py", line 320, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/opt/lib/python2.6/SocketServer.py", line 615, in __init__
self.handle()
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/httpserver.py",
line 442, in handle
BaseHTTPRequestHandler.handle(self)
File "/opt/lib/python2.6/BaseHTTPServer.py", line 329, in handle
self.handle_one_request()
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/httpserver.py",
line 437, in handle_one_request
self.wsgi_execute()
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/httpserver.py",
line 287, in wsgi_execute
self.wsgi_start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/urlmap.py",
line 202, in __call__
return app(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/cascade.py",
line 130, in __call__
return self.apps[-1](environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/registry.py",
line 375, in __call__
app_iter = self.application(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/recursive.py",
line 84, in __call__
return middleware(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/recursive.py",
line 47, in __call__
return self.app(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/errordocument.py",
line 84, in __call__
return self.app(environ, keep_status_start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/recursive.py",
line 80, in __call__
return self.application(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/errordocument.py",
line 185, in __call__
app_iter = self.application(environ, change_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Paste-1.7.3dev_r7858-py2.6.egg/paste/exceptions/errormiddleware.py",
line 138, in __call__
return self.application(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/repoze.who-1.0.13-py2.6.egg/repoze/who/middleware.py",
line 107, in __call__
app_iter = app(environ, wrapper.wrap_start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Pylons-0.9.6.1-py2.6.egg/pylons/wsgiapp.py",
line 315, in __call__
return self.app(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Beaker-0.7.5-py2.6.egg/beaker/cache.py",
line 180, in __call__
return self.app(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Beaker-0.7.5-py2.6.egg/beaker/session.py",
line 405, in __call__
response = self.wrap_app(environ, session_start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Routes-1.10.1-py2.6.egg/routes/middleware.py",
line 118, in __call__
response = self.app(environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Pylons-0.9.6.1-py2.6.egg/pylons/wsgiapp.py",
line 95, in __call__
response = self.dispatch(controller, environ, start_response)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Pylons-0.9.6.1-py2.6.egg/pylons/wsgiapp.py",
line 237, in dispatch
return controller(environ, start_response)
File "/home/kochhar/workspace/argus-trunk/argus/lib/base.py", line 25, in
__call__
abort(401)
File
"/home/kochhar/workspace/argus-trunk/_install/lib/python2.6/site-packages/Pylons-0.9.6.1-py2.6.egg/pylons/controllers/util.py",
line 63, in abort
raise exc
HTTPUnauthorized: 401 Unauthorized
This server could not verify that you are authorized to
access the document you requested. Either you supplied the
wrong credentials (e.g., bad password), or your browser
does not understand how to supply the credentials required.