Có một số URL được ứng dụng Pyramid của tôi xử lý. Khi người dùng không được thẩm định cố gắng để mở bất kỳ URL sau đó người dùng sẽ được chuyển hướng vào ô đăng nhập:Các chế độ xem đăng nhập khác nhau trong 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')
Nhưng đối với một số url (đường) Tôi phải trả lại không phải là hình thức đăng nhập, nhưng một 401 Unauthorized status code
với WWW-Authenticate
tiêu đề. Làm thế nào tôi có thể thiết lập các tuyến đường của tôi để thực hiện điều này? Tôi đoán rằng tôi phải sử dụng route_predicate
.
Tại sao bạn không thể đơn giản trả về HTTPUnauthorized như được mô tả [ở đây] (http://docs.pylonsproject.org/projects/pyramid//en/latest/narr/views.html#http-exceptions) cho một số chế độ xem cần logic này? –