5

我想知道如果auth.logout清除會話數據或我必須由我自己做。Django/Auth:註銷會清除會話數據?

from django.contrib.auth.decorators import login_required 
from django.contrib import auth 
@login_required 
def logout(request): 
    auth.logout(request) 
    return redirect('base:homepage') 

事情是這樣的......

from django.contrib.auth.decorators import login_required 
from django.contrib import auth 

@login_required 
def logout(request): 
    for sesskey in request.session.keys(): 
     del request.session[sesskey] 
    auth.logout(request) 
    return redirect('base:homepage') 

謝謝!

+0

的可能重複(http://stackoverflow.com/questions/12574459/does-the -django認證 - 註銷 - 功能 - 刪除 - 會話行中,Django的-SE) – karthikr 2013-04-05 20:30:10

回答

12

是的。註銷刷新會話。

這是its source:?是否Django的認證註銷功能刪除的在Django \ _session表會話行]

def logout(request): 
    """ 
    Removes the authenticated user's ID from the request and flushes their 
    session data. 
    """ 
    # Dispatch the signal before the user is logged out so the receivers have a 
    # chance to find out *who* logged out. 
    user = getattr(request, 'user', None) 
    if hasattr(user, 'is_authenticated') and not user.is_authenticated(): 
     user = None 
    user_logged_out.send(sender=user.__class__, request=request, user=user) 

    request.session.flush() 
    if hasattr(request, 'user'): 
     from django.contrib.auth.models import AnonymousUser 
     request.user = AnonymousUser()