2016-01-26 11 views
4

Я пытаюсь ограничить вызов ajax только для зарегистрированных пользователей. Типичным вариантом использования является размещение блогов, только зарегистрированные пользователи могут отправлять сообщения, иначе пользователь должен быть перенаправлен в конечную точку/login. Я использую флеш-безопасность. Я могу сделать то же самое, не используя ajax. Может кто-нибудь предложить мне, как реализовать такую ​​функцию.Ограничение вызова ajax только для входа в систему пользователя в Flask

+1

В методе обработки Ajax в бэкэнд проверьте, пользователь вошел в систему или нет. Если это не так, верните пользовательское сообщение или код. Проверьте это в JS и переадресовывайте на страницу по мере необходимости. – Celeo

+0

Так что мне нужно передать user_id в каждый запрос для бэкэнд, чтобы определить, зарегистрирован ли этот пользователь или нет. –

+0

также обратите внимание, что вы можете проверить, является ли запрос AJAX, и если да, верните 401 против перенаправления (301) о том, как обрабатываются вещи, вы можете завершить свой запрос ajax, получив в качестве ответа логин html – Foon

ответ

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'