2017-04-22 11 views
0

로그인 사이트 (0.0.0.0:5000/)로 갈 때마다 페이지는 즉시 0.0.0.0:5000/admin으로 되돌아갑니다. 왜 이런 일이 일어나고 있는지에 대한 아이디어가 있습니까?내 코드가 색인 페이지를 건너 뛰는 이유는 무엇입니까?

intel edison에서 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

그 이미지가 폰트 크기와 색상의 선택과 거의 읽을 수 있습니다 : 당신의 들여 쓰기가 else 블록 떨어져처럼

사실, 그냥 보인다. 실제 코드를 붙여 넣으십시오. –

+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 속성을 설정하십시오.

@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

아뇨, 미안 해요, 플라스크는 평소에 쓰는 게 아니에요. –