

※ 위와 같이 설정하면 개발자도구에서 [403 Forbidden]오류가 뜹니다.



※ 위는 ALERT창 내용 입니다.
★맨 처음 한 번만 정상적으로 ajax가 작동하고 그 다음에 다시 오류가 뜹니다.
여기저기서 검색해보니 token을 재생성(?)해줘야 한다고 하는데 어디서 어떻게 해줘야할까요,,,,
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
뭐가 문제일까요 전혀 감을 못 잡겠습니다.ㅠㅠ ci4로 ajax를 처음 사용합니다.
1. view파일에는
<form method="post">
<?= csrf_meta() ?>
<input type="hidden" id="id_token" name="<?= csrf_token() ?>" value="<?= csrf_hash() ?>" />
<div class="form-group">
<label for="country">Countries</label>
<select class="form-control" name="country_id" id="country_id">
<option value="">Select Country</option>
<?php foreach($countries as $c){?>
<option value="<?php echo $c->id;?>"><?php echo $c->name;?></option>"
<?php }?>
</select>
</div>
추가되어 있습니다.
2. .env파일 수정하였습니다.
security.csrfProtection = 'cookie'
security.tokenRandomize = true
security.tokenName = 'csrf_token'
security.headerName = 'X-CSRF-TOKEN'
security.cookieName = 'csrf_cookie_name'
security.expires = 7200
security.regenerate = true
security.redirect = false
security.samesite = 'Lax'
#ci4 매뉴얼을 봐도 ajax사용법을 잘 모르겠습니다. 혹시 좋은 예제가 있으면 알려주시면 감사하겠습니다.
https://www.cikorea.net/bbs/view/qna?idx=20798&page=1&view_category=&lists_style=
이 내용과 같은데 ci4입니다.
Security::generateHash()는 공개로 전환되었으며 Config\Security::$regenerate가 false인 경우 CSRF 토큰을 수동으로 재생성할 때 사용할 수 있습니다.매뉴얼에서 'generateHash'검색 후 위의 내용 확인했으며, 현재 제 세팅된 환경에서 위의 내용 false로 바꿔주니 (.env파일) 토큰 재생성됨을 확인하였습니다.
방법1.
를 false로 하여 토큰이 바뀌지 않도록 한다.
- 전 이방법을 사용중입니다. post로 여러개 전송 하는경우가 많아서
방법2
post 전송이 되었다면 토큰을 다시 생성해준다.
추가로
Security::generateHash()메소드를 사용하여 수동으로 CSRF 토큰을 재생성할 수 있습니다.라고 매뉴얼에 나와있는데 위의 generateHash()는 어떻게 사용하는건가요?