2

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

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

当用户登录并进入包含表单的页面时,如果会话超时,他仍然可以进行表单发布,导致我的网站逻辑出现一些问题,因为未登录的用户应该被重定向到登录页面,有什么办法可以吗?无需通过我所有的页面事件函数并查找此案例即可实现此行为?

提前致谢和问候

4

1 回答 1

4

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

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

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

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

于 2011-05-27T02:18:56.117 回答