2014-10-08 15 views
2

Я разрабатываю веб-приложение с использованием микрофотографии в колбе.Как сделать страницу недоступной в Flask?

Я хотел бы иметь представление, доступное только тогда, когда оно перенаправляется из другого представления, а не напрямую от пользователей.

Чтобы сделать его более ясным:

@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(...) 

Вид INPROGRESS должен быть доступен только тогда, когда это «называется» с точки зрения дома.

Возможно ли это?

+0

Как вы планируете это делать? Через проверку реферера, настройку файла cookie или что-то еще? Вы знаете, что все это можно обойти очень легко, если кто-то действительно хочет просмотреть эту страницу? –

+0

Я спрашиваю, потому что я не знаю, как это сделать, и если это возможно. Насколько я знаю, файлы cookie криптографически подписаны в Flask. Что-нибудь на стороне сервера? – boh

+0

Вы не можете - просто сделайте это - поскольку http - это протокол без состояния. Никто не знает, когда вы нажимаете «URL-адрес, если вы были направлены или нет,« HTTP-референт »можно легко отменить. Таким образом, вам нужна какая-то государственная обработка. Печенье звучит как план. Но я волнуюсь, что вы разрабатываете свое приложение таким образом, в первую очередь. – brunsgaard

ответ

2

Перед отправкой перенаправления установите флаг в объекте сеанса. В представлении «inprogress» должен быть указан этот флаг. если он установлен, groovy, отрисуйте страницу. Если это не так, перенаправите их на другую страницу (и запустите предупреждение о попытке доступа к этой странице, необязательно).

+0

До сих пор я решал через различные проверки на БД. Если он обнаруживает неэффективность, я пойду на это решение. – boh

Смежные вопросы