2014-12-10 4 views
2

У меня две проблемы с моим простым приложением.Chicago Boss CSRF и переменная, проходящая в файлы шаблонов

Я дважды читал документы, но мне не повезло с использованием boss_csrf_filter и передачи переменных в шаблоны.

Сначала я сделал конфигурации для использования CSRF фильтра в boss.config файл в следующем:

{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"}, 

Затем я добавить к переменной в шаблоне (который находится под ЦСИ/вид/мир /hello.html)

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

Everthing кажется прекрасным, но никакой скрытый элемент ввода не появляется. Должен ли я проверить/настроить что-нибудь еще?

Вторая проблема заключается в том, что мое приложение передает переменные в шаблоны. Мой контроллер имеет следующий код:

-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 %} 

Что я делаю не так? Как я могу исправить проблемы?

ответ

2

Я бы предложил разделить ваш вопрос на два, потому что у меня есть ответ только для второй части. Когда вы используете redirect в контроллере, вы не пропускаете переменные. В the docs вы можете прочитать:

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

Так что третий аргумент является список заголовков, а не переменные, передаваемые в шаблонах. Это имеет смысл: переменные будут взяты из контроллера, что отвечает за рендеринг "/".