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.

Reply via email to