2016-01-26 69 views
4

我想限制ajax调用只为登录用户。典型的用例是张贴博客,只有登录用户可以提交帖子,否则用户应该被重定向到/登录端点。我正在使用安全瓶。我可以通过不使用ajax来做同样的事情。 任何人都可以建议我如何实现这样的功能。只限于在Flask中登录的用户限制ajax调用

+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'