“記住密碼”的實質,實際上就是把cookie的有效期設置的長一點,當用戶沒有選擇記住密碼時,cookie的有效期為會話結束,選擇記住密碼后,會根據服務器的設置延長cookie的有效期,默認是31天。在flask框架中,服務器不會保存用戶的會話,而是把會話加秘后放在cookie里面返回給用戶。所以,可以通過在session中放置一個標識用戶的字段,實現服務器記住用戶的功能。
0x01:前端登陸頁面
這是一個簡單的前台登陸頁面,在賬號密碼的下面用戶可選擇是否記住密碼,實質上,它就是一個input標簽,類型是check的復選框類型,它有被開發人員設置了一個默認值,如果用戶沒有勾選‘記住登錄名’,則這個input標簽里面就沒有值,為None,如果用戶勾選的‘記住登錄名’,則這個input標簽里面的值就為設置的默認值
0x02:后台HTML代碼
1 <div id="remember"> 2 <span style="margin-left: 10px; color: green"><input type="checkbox" name="remember" value="1">記住登錄名</span> 3 <a href="{{ url_for('forget') }}" style="float: right;margin-top:1px">忘記密碼?</a> 4 </div>
第二行的input標簽就是‘記住登錄名’這一部分了,它的默認值是‘1’,input的名字是remember,如果用戶沒有選擇‘記住登錄名’,則remember為none,若勾選了,就把‘1’賦值給remember
0x03:服務器端設置cookie時效
1 if remember == '1': 2 session.permanent = True 3 session['user_id'] = user.id 4 return redirect(url_for('index')) 5 else: 6 session['user_id'] = user.id 7 return redirect(url_for('index'))
第一行,我們通過remember的值判斷用戶是否勾選的‘記住登錄名’,人后根據這兩種情況分別設置cookie的時效