1. JWT
- PyJWT 모듈 활용
- 사용자가 로그인 창에서 입력한 값을 받아 회원 db와 비교 후 회원 인증이 되면 만료기간과 일부 개인정보가 포함된 JWT 전송
- 로그인이 된 이후에는 매 작업마다 JWT를 서버에 전송하면서 회원임을 인증함
- 기능이 다양하진 않아 refresh_token 사용은 따로 없는 것 같고, 직접 구현해야 하는 것 같다
- refresh_token은 access_token과는 또 다른 JWT로, 보안을 강화하기 위해 만들어짐
- refresh_token은 access_token이 만료되었을 때 갱신해주는 역할
- refresh_token은 더 안전한 곳에 저장하고 access_token의 만료기간을 더 줄일 수 있다
- 그러나 더 안전한 곳이라는 부분에서 딜레마가 생김(프론트에 저장? db에 저장?)
- 이 부분에서 막혀서 구현하다 말았다
2. flask 동적 페이지 라우팅
- html의 anchor 태그로 속성을 href='/XXX'을 설정한 후
- flask의 api에서
@app,route('/<keyword>', methods=[])
def api(keyword):
return keyword
- 위 같이 받으면 XXX에 해당하는 값이 keyword로 할당되어 api() 함수에도 인자로서 들어가 서버에서 활용할 수 있음
3. html select 태그
- onchange 속성을 통해 submit하는 버튼 따로 없이 option을 클릭하기만 하면 서버로 전송 가능
- select 태그의 자식인 option 태그들의 속성에 value="XXX" 로 설정하면 this.value로 js에서 활용 가능
<select onchange="send_value(this.value)" class="form-select" id="select_sort">
<option selected>Sort</option>
<option value="reviews">리뷰👍</option>
<option value="stars">별점👍</option>
</select>
4. ajax 통신 (GET으로 데이터 전송)
function send_value(val) {
let selected = val
$.ajax({
type: "GET",
url: "/sort_places?sort_give=" + selected,
data: {},
success: function (response) {
console.log(response)
}
});
}
@app.route('/sort_places', methods=['GET'])
def sort_places():
sort_receive = request.args.get('sort_give')
- 쿼리 파라미터에 sort_give 키값으로 전송, request.args.get으로 받기