4

前几天我开始为一个新项目使用 web2py。我真的很喜欢这种结构和整个概念,在使用 PHP 框架几年后感觉就像一股新鲜空气。

(目前)唯一困扰我的是票务系统。每次我出错时,都会显示一个带有票证链接的页面。如果链接有效,我想我可以忍受。它当前指向一个使用 http 作为协议而不是 https 的管理页面。我做了一些阅读,管理员的强制 https 似乎是一种安全措施,但这使得调试很痛苦。

这里的标准解决方案是什么?更改错误页面,允许管理员使用 http och 使用日志进行调试?

最好的问候弗雷德里克

4

2 回答 2

4

我和你在同一条船上,我不喜欢默认机制。幸运的是,使用 web2py 自定义异常处理非常简单。查看 web2py 目录根目录中的 routes.py。我已将以下内容添加到我的:

routes_onerror = [('application_name/*','/application_name/error/index')]

这会将任何异常路由到我的错误处理程序控制器(application_name/controllers/error.py),我在其中将我的 def 索引定义为:

def index():
    if request.vars.code == '400':
        return(dict(app=request.application,
            ticket=None,
            traceback="A 400 error was raised, this is controller/method path not found",
            code=None,
            layer=None,
            wasEmailed=False))
    elif request.vars.code == '404':
        return(dict(app=request.application,
            ticket=None,
            traceback="A 404 error was raised, this is bad.",
            code=None,
            layer=None,
            wasEmailed=False))  
    else:
        fH = file('applications/%s/errors/%s' % (request.application,request.vars.ticket.split("/")[1]))
        e = cPickle.load(fH)
            fH.close()
            __sendEmail(request.application,e['layer'],e['traceback'],e['code'])
        return(dict(app=request.application,
            ticket=request.vars.ticket,
            traceback=e['traceback'],
            code=e['code'],
            layer=e['layer'],
            wasEmailed=True))

如您所见,对于非 400 和 404 错误,我通过电子邮件将回溯发送给自己,然后调用相应的视图/错误/index.html。在生产中,这个视图给出了一个通用的“我很抱歉发生了错误,开发人员已收到电子邮件”。在我的开发服务器上,它显示格式化的回溯。

于 2010-08-17T18:46:53.997 回答
0

通常,我只使用http://127.0.0.1/(如果你是本地的或通过 ssh)或使用 https:// 编辑/导航...

因此,您将第一次登录管理应用程序,但之后总是会显示门票。

于 2010-08-18T22:29:38.533 回答