2010-11-26 1 views
0
from bottle import route, run, debug, error, request, template 

@route('/home') 
@route('/home/') 
def login(): 
    return template('templates/login') 

@route('/home', method='POST') 
@route('/home/', method='POST') 
def welocme(): 
    data = request.POST 
    if data: 
     password = data.get('password') 
     check_pass = 'password' 
     if password == check_pass: 
      return template('templates/welcome') 
     else: 
      return template('templates/login') 
    else: 
     return template('templates/login') 

내 요구 사항 : 동일한 URL에서 로그인 및 환영 페이지를 받게됩니다. 로그인 페이지에는 암호 필드가 하나만 있습니다.병에 작은 응용 프로그램을 쓰고 있습니다. 몇 가지 개념적 문제가 해결하는데 도움이됩니다.

내 문제 : 로그인을하고 새로 고침하면 다시 환영 페이지로 이동하면 로그인 페이지로 이동합니다. 그러나 이상적으로 그것은 환영 페이지에서만 있어야합니다.

@error(404) 
def error404(error): 
    return 'http://google.com' 

내 두 번째 문제 : 나는 당신이 그들이 있는지 확인하고 싶지 않아, 사용자가 "/ 홈"페이지로 이동하면 404

답변

1

에 특정 URL을 리디렉션 할 로그인 화면을 표시하기 전에 로그인 했습니까? HTTP 메소드가 POST가 아닌 경우 아직 로그인하지 않았다고 가정합니다.

프레임 워크에 대해 잘 모르지만 로그인에 성공하면 쿠키를 설정해야하며 HTTP GET 쿠키를 확인하여 사용자가 인증되었는지 확인해야합니다.

+0

여기에 사용자가 로그인했는지 여부를 확인하는 방법 – aoondey

+0

병 리디렉션 기능은 403 용입니다. 404 용 아니요 – aoondey

+0

@aoondey 쿠키를 사용해야합니다. '병 '은이 기능을 독자적으로 제공하지 않습니다. 직접해야합니다. 어쩌면 기본 기술에 익숙하지 않은 경우 이러한 기능을 제공하는 또 다른 프레임 워크를 시도해야합니다. –

0

질문을 올바르게 이해하면 환영 템플릿을 렌더링하는 유일한 방법은 POST를 통한 것입니다.

GET 요청이 누군가가 로그인했는지 여부를 확인하도록 변경할 수 있습니다. 실패한 경우 로그인 페이지로 리디렉션하십시오.

+0

GET 요청에서 비밀번호를 숨기는 방법은 무엇입니까? – aoondey

+0

GET을 사용하여 암호를 보내지 마십시오 - 쿠키를 보냅니다. – robert

1

두 번째 질문에 대한 답변은 here입니다.

Beaker's cookie sessions을 살펴보고 요청간에 응용 프로그램의 상태를 유지하는 것이 좋습니다.

관련 문제