erlang - Chicago Boss CSRF 和变量传递到模板文件

标签 erlang session-variables csrf-protection chicagoboss

我的简单应用程序有两个问题。

我已经阅读了文档两次,但没有运气使用 boss_csrf_filter 并将变量传递给模板。

首先,我在 boss.config 文件中完成了使用 CSRF 过滤器的配置,如下所示:

{controller_filter_config, [boss_csrf_filter]},
{session_adapter, mock},
{session_key, "_myapp_session"},
{session_exp_time, 525600},
{session_cookie_http_only, false},
{session_cookie_secure, false},
{session_domain, ".myappdomain.com"},

然后,我在模板中添加了变量(位于 src/view/world/hello.html 下)

<div class="row">
<div class="12u">
<textarea name="message" id="message" placeholder="placeholder" required></textarea>
 {{ csrf_token }}
 </div>
 </div>

一切看起来都很好,但没有出现任何隐藏的输入元素。我应该检查/配置其他内容吗?

第二个问题是我的应用程序将变量传递给模板。我的 Controller 类似于以下代码:

-module(myapp_world_controller, [Req]).
-compile(export_all).

hello('GET', []) ->
    {ok, [{world}]}.

postcontact('POST', []) ->
         {redirect, "/",[{contactformsend, "ok"}]}.

代码正在重定向,没有任何值。因此,以下代码不起作用(与我上面提到的模板文件相同):

{% if contactformsend %}

<script>

    alert("Hi there is!");

</script>

{% endif %}

我做错了什么?我该如何解决这些问题?

最佳答案

我建议将您的问题分成两部分,因为我只回答了第二部分。当您在 Controller 中使用redirect时,您不会传递变量。在 the docs你可以阅读以下内容:

{redirect, Location, Headers::proplist()}

因此第三个参数是 header 列表,而不是传递给模板的变量。这是有道理的:变量将从负责渲染 "/" 的 Controller 中获取。

关于erlang - Chicago Boss CSRF 和变量传递到模板文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408723/

相关文章:

erlang - 为什么或何时应该在 Erlang 中使用 RabbitMQ、ZeroMQ 等消息队列?

erlang - 在 Erlang 中解码 PGP key

Erlang 如何混合使用 try catch 和 if

c# - 如何存储任务的事件状态,并保持这些任务列表的永久性

c# - 如何在 Crystal Reports 中绑定(bind) session 值

python - django csrf token 在每个请求上都必须是唯一的吗?

c - 在erlang中运行C代码

python - Django - 除非刷新页面,否则 session 变量不会更改

django - CSRF仅在DRF中进行身份验证时才检查?

asp.net - 模拟CSRF攻击