Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

예약 추가 POST User Authentication 질문 #35

Open
sjho opened this issue Apr 2, 2019 · 5 comments
Open

예약 추가 POST User Authentication 질문 #35

sjho opened this issue Apr 2, 2019 · 5 comments
Labels
hw2 HW2 question Further information is requested

Comments

@sjho
Copy link

sjho commented Apr 2, 2019

Django 백엔드에서 특정 사용자로 로그인이 되어있지 않으면 meeting의 POST, delete를 금지하게 했었습니다. 그렇다면 Redux-saga에서 Django 서버로 POST할 때 어떻게 Authentication을 하나요??? 이틀 고민하고 질문 드립니다....

@jeuxdeau
Copy link
Contributor

jeuxdeau commented Apr 2, 2019

간단하게는 로그인할 때 아이디 비밀번호를 받아서 스토어에 저장해 놓고 post할 때 실어 보내면 될 것 같은데요

가장 간단하게는 (과제 스펙에 있어서 꼭 필요한 게 아니라면) Authentication을 없애 버려도 되지 않을까요
ㅎㅎㅎ

@sjho
Copy link
Author

sjho commented Apr 2, 2019

그 아이디 비밀번호 실어서 보내는 방법 찾고 있는데 도저히 안나와서요 ㅠㅠㅠㅠ... header에 실어서 보내봤는데 자꾸 Forbidden Error 떠서요... 더군다나 Authentication 없애면 과제 스펙이랑 어긋나지 않을까요? HW1의 백엔드를 기준으로 구현하라고 했으니....

@jeuxdeau
Copy link
Contributor

jeuxdeau commented Apr 2, 2019

헤더 형식을 어떻게 주셨는지 보면 좋을 것 같은데요,

Authorization: Basic {base64}
base64 자리에는 username:password의 base64 인코딩이 들어가면 됩니다

ex. username admin, password 1234
=> admin:1234의 base64 인코딩이 YWRtaW46MTIzNA==
=> Authorization: Basic YWRtaW46MTIzNA==

Django REST 튜토리얼에서
httpie로 http -a admin:1234 했던 거랑 같은 방법이에요
https://en.wikipedia.org/wiki/Basic_access_authentication

혹시 이렇게 하면 해결이 될까요?

별개로 백엔드는 필요에 따라 수정하라고 되어 있는데
백엔드 인증을 없애도 프론트엔드에서 로그인 시점에 인증 여부를 받아서 처리할 수도 있지 않을까 싶네요
^----^

@ldm2468
Copy link

ldm2468 commented Apr 2, 2019

질문자분이 겪으신 문제랑 같은 문제인지는 모르겠지만...
전 django에 /admin으로 로그인한 상태에서 헤더에 basic auth를 실어보냈더니 쿠키의 CSRF값이랑 헤더의 authentication이랑 충돌했어요.

그래서 fetch에 credentials: 'omit' 옵션을 추가했더니 잘 됐어요.
(https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch)

만약 ARc를 사용하신다면 api.post() 등의 함수에 해당 옵션을 추가하시면 됩니다.
(ex)

yield call([api, api.post], '/meetings/', data, { headers: (헤더정보), credentials: 'omit' })

잘 됐으면 좋겠네요!

@sjho
Copy link
Author

sjho commented Apr 3, 2019

두분 답변 합쳐서 잘 해결했습니다! 감사합니다 😀😀😀😀

@minkiminki minkiminki added hw2 HW2 question Further information is requested labels Apr 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hw2 HW2 question Further information is requested
Projects
None yet
Development

No branches or pull requests

4 participants