从cherrypy before_handler工具返回json

时间:2016-08-05 12:34:03

标签: python json cherrypy

我有一个樱桃应用程序,我已经实现了一个自定义工具(请求过滤器),我已经附加到before_handler钩子。 Bellow是过滤器实现:

def custom_filter():
    method = cherrypy.request.method
    if method == 'POST':
        print 'check POST token'
        try:
            request_headers = cherrypy.request.headers
            token = request_headers['Authorization']
            if not _auth.validate_token(token):
                    return 'error message'
        except:
            print 'Error in post filter'

我想要的是如果令牌无效,则将消息返回给客户端。 return语句不起作用。是否有可能做到这一点?如果没有,还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

根据this帖子,经过一些调查后,我找到了一个适合我的解决方案:停止执行请求,然后添加一个响应正文。

def custom_filter():
method = cherrypy.request.method
if method == 'POST':
    print 'check POST token'
    try:
        request_headers = cherrypy.request.headers
        token = request_headers['Authorization']
        if not _auth.validate_token(token):
                cherrypy.request.handler = None # stop request
                cherrypy.response.status = 403 
                cherrypy.response.body = 'test'  # add response message

    except:
        print 'Error in post filter'