氮气期

时间:2011-03-14 11:01:18

标签: erlang nitrogen

在我的所有氮页面中,我使用以下语义:

main() -> 
case wf:user() /= undefined of 
    true  -> main_authorized();
    false -> wf:redirect_to_login("/login")
end.

当用户登录并且在包含表单的页面中,如果会话超时,他仍然可以执行表单发布,导致我的网站逻辑出现一些问题,因为未记录的用户应该重定向到登录页面,是否有任何问题我可以实现这种行为,而不必经历我的所有页面事件功能,并寻找这种情况?

提前致谢并问候

1 个答案:

答案 0 :(得分:4)

Nitrogen为应用程序开发人员提供了定义和设置授权回调模块的能力。

您可以定义一个授权处理程序,而不是您在每个页面处理程序中描述的main/0逻辑,就像我在二月份写的以下Gist一样: https://gist.github.com/830529

您定义的init/2回调模块中的security_handler函数(假设您在启动时使用nitrogen:handler/2将其挂钩)将在页面中的main/0函数之前执行处理程序。

为确保不执行POST页面处理程序的任何部分,您应该以401为参数调用wf:status_code/1。然后根据您的Web服务器配置,在401响应中指定相应的登录页面。