2014-10-08 2 views
2

플라스크 마이크로 프레임 워크를 사용하여 웹 응용 프로그램을 개발하고 있습니다.플라스크에서 직접 액세스 할 수없는 페이지를 만드는 방법은 무엇입니까?

사용자가 직접 다른보기에서 리디렉션되는 경우에만 액세스 할 수있는보기를 원합니다.

은 더 명확하게하려면 :

@app.route('/', methods=('GET', 'POST')) 
@app.route('/home', methods=('GET', 'POST')) 
def home(): 
#Some code 
return redirect(url_for('inProgress', parameter) 

@app.route('/path/<parameter>') 
def inProgress(parameter): 
return render_template(...) 

뷰 진행중 그것이 홈보기에서 "소위"때만 액세스 할 수 있어야합니다.

가능합니까?

+0

어떻게 계획 하시겠습니까? 리퍼러를 확인하거나 쿠키를 설정하거나 다른 것을 사용 하시겠습니까? 누군가가 정말로 그 페이지를보고 싶다면이 모든 것을 우회 할 수 있다는 것을 알고 있습니까? –

+0

나는 어떻게 할 수 있는지 또는 그것이 가능할 지 모르기 때문에 내가 묻고있다. 내가 아는 한, 쿠키는 Flask에서 암호로 서명됩니다. 서버쪽에 뭐라 구요? – boh

+0

http는 상태 비 저장 프로토콜이기 때문에 그렇게 할 수 없습니다. 당신이 언급을 받았다면 URL을 눌렀을 때 아무도 모른다. HTTP 리퍼러는 쉽게 말을 할 수있다. 그래서 일종의 국가 처리가 필요합니다. 쿠키는 계획처럼 들립니다. 하지만 당신이 처음부터이 방법으로 응용 프로그램을 설계하고 있다고 걱정됩니다. – brunsgaard

답변

2

리디렉션을 시작하기 전에 세션 개체에 플래그를 설정하십시오. "inprogress"뷰는 해당 플래그를 확인해야합니다. 설정되어 있으면 그루비가 페이지를 렌더링합니다. 그렇지 않은 경우 해당 페이지를 다른 페이지로 리디렉션합니다 (해당 페이지에 액세스하려는 시도에 대한 경고 표시, 선택 사항).

+0

지금까지 DB에 대한 다양한 점검을 통해 해결되었습니다. 비효율적 인 것으로 밝혀지면이 해결책을 찾아 보겠습니다. – boh

관련 문제