2012-12-03 40 views
5

Tôi sử dụng Django 1.4. Tôi đã tạo 403.html tệp trong cùng thư mục với 404.html (trang lỗi 404 hoạt động tốt). Có, tôi đã đọc this. Sau đó, tôi tắt cookie trong trình duyệt của mình, thử đăng nhập và xem trang 403 lỗi mặc định, không phải là trang 403.html của tôi:403 trang ở Django

Forbidden (403) 
CSRF verification failed. Request aborted. 
More information is available with DEBUG=True. 

Tôi đã khởi động lại Apache nhưng không trợ giúp.

Cách khắc phục? Cảm ơn

Trả lời

8

Đây không phải là trang lỗi 403 mặc định. Bạn thấy thông báo này vì CSRF middleware không hoạt động khi cookie bị tắt.

Mẫu 403 tùy chỉnh của bạn không có hiệu lực vì phần mềm trung gian CSRF không sử dụng chế độ xem chung 403, nhưng chế độ xem được xác định bởi cài đặt CSRF_FAILURE_VIEW, is defined in django.conf.global_settingsdjango.views.csrf.csrf_failure. Như bạn có thể thấy in the source, thông báo bạn đang xem được mã hóa cứng trong chế độ xem.

Bạn có thể tự tạo CSRF_FAILURE_VIEW của riêng mình, nhưng đó có thể không phải là thứ bạn muốn. Tôi khuyên bạn nên để mọi thứ như cũ và xóa cookie hoặc sử dụng một trình duyệt khác để kiểm tra người dùng chưa được xác thực.

+0

Tôi chỉ muốn cung cấp cho tình huống, nếu người dùng truy cập vào сookie bị vô hiệu hóa, và rằng ông đã hiển thị trang của tôi 403. Đó là, tôi cần phải thay đổi [source] (https://github.com/django /django/blob/1.4.2/django/views/csrf.py)? – tim

+2

Không thay đổi nguồn Django! Tạo chế độ xem mới và đặt CSRF_FAILURE_VIEW trong cài đặt của bạn. Ngoài ra, bạn có thể kiểm tra trong JavaScript nếu cookie được kích hoạt và vô hiệu hóa đăng nhập. –