在我所有的氮页面中,我使用以下语义:
main() ->
case wf:user() /= undefined of
true -> main_authorized();
false -> wf:redirect_to_login("/login")
end.
当用户登录并在包含表单的页面中时,如果 session 超时,他仍然可以执行表单发布,这会导致我的网站逻辑出现一些问题,因为未登录的用户应该重定向到登录页面,是否有任何问题我怎样才能实现这种行为,而不必遍历我所有的页面事件函数并寻找这种情况?
提前致谢并致以问候
最佳答案
Nitrogen 为应用程序开发人员提供了定义和设置授权回调模块的能力。
您可以定义一个授权处理程序,而不是在每个页面处理程序中描述 main/0
逻辑,如我在二月份编写的以下要点所示:
https://gist.github.com/830529
您定义的 security_handler
回调模块中的 init/2
函数(假设您在启动时使用 nitrogen:handler/2
将其挂接) ) 将在页面处理程序中的 main/0
函数之前执行。
为了确保 POST 页面处理程序的任何部分都不会执行,您应该使用 401 作为参数调用 wf:status_code/1
。然后根据您的网络服务器的配置指定在 401 响应上提供适当的登录页面。
关于erlang - 氮气 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5297688/