Ci sono alcuni URL gestiti dalla mia applicazione Pyramid. Quando un utente non autenticato tenta di aprire qualsiasi URL allora l'utente viene reindirizzato al form di login:Visualizzazioni di login diverse in Pyramid
def forbidden(request):
if request.user.keyname == 'guest':
return HTTPFound(location=request.route_url('auth.login',))
request.response.status = 403
return dict(subtitle=u"Access denied")
config.add_view(forbidden, context=HTTPForbidden, renderer='auth/forbidden.mako')
Ma per alcuni URL (percorsi) devo restituire non il modulo di login, ma un 401 Unauthorized status code
con WWW-Authenticate
intestazione. Come posso impostare i miei percorsi per realizzare questo? Sto indovinando che devo usare route_predicate
.
Perché non puoi semplicemente restituire HTTPUnauthorized come descritto [qui] (http://docs.pylonsproject.org/projects/pyramid//en/latest/narr/views.html#http-exceptions) per le poche visualizzazioni che ha bisogno di questa logica? –