On Fri, Jul 17, 2009 at 11:19 AM, Ronghui Yu <[email protected]> wrote:

>
>
> Michael 写道:
>
> 2009/7/17 Ronghui Yu <[email protected]>
>
>> Hi, All,
>>
>> I have a project that have CsrfMiddleware enable, all forms work fine, but
>> the login form doesn't, for all browsers(IE,Chrome,Firefox,Safari).
>> Most of the time, it throws 403, which is thrown by CsrfMiddleware. That's
>> because the browser cache the login page, so each time the login page is
>> opened, the csrfmiddlearetoken value doesn't get update. If the browser
>> cache is cleaned before opening the login page, then it works fine. But this
>> is not what I expect.
>>
>> When look into django.contrib.auth.views, the login view is decorated by
>> never_cache, but actually it doesn't work for me. I have no idea what's
>> wrong with it. Has anybody ever encounted this situation? Or could anybody
>> give me some hints?
>>
>> Thanks in advance.
>>
>> --
>> Ronghui Yu <[email protected]>
>>
>
> I have encountered this, but it isn't a problem with the admin, it is a
> problem with the browser. These pages are stored for offline use and then
> when the user goes to the page, they don't get a new token. You can see here
> [1] and here [2] where the views are cached. You can look at your browser
> and see that the headers are right as well. You should see something along
> these lines in the headers: Cache-Control max-age=0
>
>  1]
> http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/sites.py#L324
> 2]
> http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/sites.py#L188
>
>  I haven't been able to figure out how to fix this behavior in the
> browser, but the user only needs to refresh a few times to break that
> cache.
>
>  I would love to hear if anyone else has figured something out to fix
> this.
>
>  Also if you are using the 1.1 branch, make sure you update svn there was
> a recent fix put in for caching of all pages[3], but otherwise, the best I
> can tell, this is a browser issue, and not something Django can easily fix.
>
>  3] http://code.djangoproject.com/ticket/11416
>
>  I hope that helps,
>
>  Michael
>
>
>  Thanks Michael.
>
> Look into the apache log, I see that when the login page is accessed again,
> it returns 304, then the subsequent submit returns 403.
>
> 116.22.69.90 - - [17/Jul/2009:23:12:06 +0800] "GET /accounts/login/
> HTTP/1.0" 304
> 116.22.69.90 - - [17/Jul/2009:23:12:17 +0800] "POST /accounts/login/
> HTTP/1.0" 403 159
>
> I guess there are some tags that apache or mod_python omits. But I am not
> sure. I will do more research soon.
>
> --
> Ronghui Yu <[email protected]>
>

Hmm, interesting, What do your HTTP headers look like?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" 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/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to