我有一个樱桃应用程序,我已经实现了一个自定义工具(请求过滤器),我已经附加到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语句不起作用。是否有可能做到这一点?如果没有,还有其他选择吗?
答案 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'