2017-04-22 72 views
0

每当我进入登录站点(0.0.0.0:5000/)时,页面立即恢复为0.0.0.0:5000/admin。任何想法为什么发生这种情况?为什么我的代码跳过我的索引页?

在intel爱迪生上运行yocto。通过腻子编辑

@app.errorhandler(404) 
@app.errorhandler(500) 
def errorpage(e): 
    return render_template('404.html') 

def login_required(f): 
    @wraps(f) 
    def wrap(*args, **kwargs): 
     if 'logged_in' in session: 
      return f(*args, **kwargs) 
     else: 
      flash('please login first.') 
      return redirect (url_for('index')) 
    return wrap 

@app.route('/', methods=['GET','POST']) 
def index(): 
    error = None 
    if request.method == 'POST': 
     if request.form['username'] != 'admin' or request.form['password'] != 'password': 
      error = 'invalid attempt.' 

    else: 
     session['logged_in'] = True 
     return redirect(url_for('admin')) 
    return render_template('index.html', error = error) 

@app.route('/logout') 
def logout(): 
    session.pop('logged_in', None) 
    return render_template('/logout.html') 

@app.route('/admin',methods=['GET','POST']) 
@login_required 
def admin(): 
+0

该图像与选择的字体大小和颜色的勉强可读。请粘贴实际的代码。 –

+0

任何线索如何通过腻子复制和粘贴vi? – Zane

+0

看看这是否有帮助:http://stackoverflow.com/questions/16741511/copy-from-putty-vim-visual-mode-to-windows-clipboard –

回答

1

看起来只要有人点击了GET的页面,将它设置为logged_in = True和重定向到/admin

@app.route('/', methods=['GET','POST']) 
def index(): 
    error = None 
    if request.method == 'POST': 
     if request.form['username'] != 'admin' or request.form['password'] != 'password': 
      error = 'invalid attempt.' 

    else: # this is always triggered for GETs, even if not logged in! 
     session['logged_in'] = True 
     return redirect(url_for('admin')) 
    return render_template('index.html', error = error) 

相反,你应该检查他们已经登录后,并在检查完凭据后改为在POST块中设置logged_in属性。

其实,它只是看起来像你的缩进是把你的else块:

@app.route('/', methods=['GET','POST']) 
def index(): 
    error = None 
    if request.method == 'POST': 
     if request.form['username'] != 'admin' or request.form['password'] != 'password': 
      error = 'invalid' 
     else: # this indenting should work now 
      session['logged_in'] = True 
      return redirect(url_for('admin')) 

    return render_template('index.html', error = error) 
+0

工作!谢谢。任何关于为什么在相关字段中使用管理员和密码的建议会激活错误处理程序? – Zane

+0

不知道对不起,烧瓶是不是我通常使用的东西。 –

相关问题