1. 程式人生 > >django 登入和session過期跳轉

django 登入和session過期跳轉

http://www.cnblogs.com/fnng/p/3841246.html

這裡需要說名一下,使用的是django自帶的session封裝技術,是在設定了request.session['userName'] = userName 之後,才會在mysql的session 表中生成資料,並且session_key是儲存在cookie裡面的,也就是說,一臺計算機上同一個瀏覽器(就算雙開兩個chrome)所使用的cookie是一樣的,所以只能一個使用者登入,如果想直接使用session,我自己沒試過,但是肯定要自己定義一張表來儲存session_key的(可以實現同一個電腦雙開chrome,兩個不同使用者登入的需求)。

core程式碼如下,game1是在有session的前提下,可以跳轉的頁面,home是沒有session的前提下的主頁面,並且在game1頁面觸發的同時更新session過期時間:

def home(request):
    return render(request, 'home.html')

@csrf_exempt
def queryUser(request):
    response_data = {}
    userName = request.POST['userName'].encode('utf-8')
    passWord = request.POST['passWord'].encode('utf-8')
    if userName == '' or passWord == '' :
        response_data['result'] = '-1'  
        return HttpResponse(json.dumps(response_data), content_type="application/json")
    userObject = models.User.objects.get(name=userName)
    if userObject.password == passWord:
        response_data['result'] = '1'
        request.session['userName'] =  userName
        return HttpResponse(json.dumps(response_data), content_type="application/json")
    else :
        response_data['result'] = '0'  
        return HttpResponse(json.dumps(response_data), content_type="application/json")
    
def game1(request):
    userName = request.session.get('userName')
    if userName == None :
        return render(request, 'home.html')
    else :
        request.session['userName'] = userName
        return render(request, 'game1.html')