Я пытаюсь ограничить вызов ajax только для зарегистрированных пользователей. Типичным вариантом использования является размещение блогов, только зарегистрированные пользователи могут отправлять сообщения, иначе пользователь должен быть перенаправлен в конечную точку/login. Я использую флеш-безопасность. Я могу сделать то же самое, не используя ajax. Может кто-нибудь предложить мне, как реализовать такую функцию.Ограничение вызова ajax только для входа в систему пользователя в Flask
4
A
ответ
2
Предполагая, что вы пытаетесь получить данные из/AJAX, как это:
$.getJSON("/ajax", function(data){
...
});
Просто защитить этот маршрут в вашем INIT .py с login_required декоратора:
from flask.ext.security import login_required
@app.route('/ajax')
@login_required
def ajax():
data = get_data() # Get your data
return json.dumps(data)
Или вы можете также сделайте это:
from flask.ext.security import current_user
@app.route('/ajax')
def ajax():
if current_user.is_authenticated:
data = get_data() # Get your data
return json.dumps(data)
else:
return 'Not allowed'
В методе обработки Ajax в бэкэнд проверьте, пользователь вошел в систему или нет. Если это не так, верните пользовательское сообщение или код. Проверьте это в JS и переадресовывайте на страницу по мере необходимости. – Celeo
Так что мне нужно передать user_id в каждый запрос для бэкэнд, чтобы определить, зарегистрирован ли этот пользователь или нет. –
также обратите внимание, что вы можете проверить, является ли запрос AJAX, и если да, верните 401 против перенаправления (301) о том, как обрабатываются вещи, вы можете завершить свой запрос ajax, получив в качестве ответа логин html – Foon