1. 程式人生 > 其它 >flask(六)優化登入-實現記住密碼功能

flask(六)優化登入-實現記住密碼功能

修改admin/views.py中login方法::

def login():
    error = None
    if request.method == 'GET':
        return  render_template('admin/login.html')
    else:
        form=LoginForm(request.form)
        if form.validate():
                user = request.form.get('username')
                pwd = request.form.get('password')
                online = request.form.get('online')
                captcha=request.form.get('captcha')
                if session.get('image').lower() != captcha.lower():
                    return render_template('admin/login.html', message="驗證碼不對!")
                else:
                        users=Users.query.filter_by(username=user).first()
                        if users:
                                    if user == users.username and users.check_password(pwd):
                                        session['user_id'] = users.uid#使用者id存於session
                                        #print(session['user_id'])
                                        # print("密碼對!")
                                        if online:  # 如果選擇了記住我
                                            session.permanent = True
                                            bp.permanent_session_lifetime = timedelta(days=10)
                                        return redirect(url_for('admin.index'))
                                    else:
                                        #print("使用者名稱或密碼錯!")
                                        error="使用者名稱或密碼錯!"
                                        return render_template('admin/login.html', message=error)
                        else:
                            return render_template('admin/login.html', message="別試了,沒有此使用者!")
        else:
               return render_template('admin/login.html', message=form.errors)

修改模板檔案admin/login.html:

<div class="row cl">
  <div class="formControls col-xs-8 col-xs-offset-3">
    <label for="online">
      <input type="checkbox" name="online" id="online" value="1">
      記住密碼</label>
  </div>
</div>