2014-12-10 5 views
2

간단한 응용 프로그램에는 두 가지 문제가 있습니다.Chicago Boss CSRF 및 템플릿 파일로 전달되는 변수

문서를 두 번 읽었지만 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 /보기/세계 아래 템플릿 (에 변수를 추가했습니다 /hello.html)

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

아무 것도 보이지 않지만 숨겨진 입력 요소가 나타나지 않습니다. 나는 다른 것을 확인/구성해야합니까?

두 번째 문제는 내 앱에서 템플릿에 변수를 전달하는 것입니다. 내 컨트롤러는 다음 코드와 같습니다.

-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()} 

그래서 세 번째 인수는 헤더 템플릿에 전달되지 변수의 목록입니다. 그것은 의미가 있습니다 : 변수는 컨트롤러에서 가져옵니다, 즉 렌더링을 담당합니다 "/".