10cheon00 / drf-practice

0 stars 0 forks source link

Check Authencicated user. #21

Closed 10cheon00 closed 3 years ago

10cheon00 commented 3 years ago
  1. Changed managing 404 error route. Removed redirecting, add props for see urls for more information.
  2. Added TokenVerifyView into django.
  3. When not authenticated user access to articleListPage, doesn't see createArticle router-link. Also sign out link is same. Delete article, update article link are same. But direct url access is still possible without authorization.
  4. For check token is verified, add global mixin.

Check Verification

먼저 SimpleJWT에서 지원하는 TokenVerifyView를 django에 추가했었다. ProfileApi에서 Verify액션을 추가해, 이 경로로 접근하여 토큰이 정상적인지 검사한다. Promise로 처리를 하므로, 곧바로 참,거짓을 반환받질 못한다. 그래서 TokenStorage에 검증되었는지를 저장하고 이 값을 조회하기로 결정했다.

이걸 조회하려면 mapState({'isTokenVerified' ... 같은 상당히 귀찮은 코드를 매 컴포넌트마다 반복해야 하므로 믹스인이 필요해졌다.

전역으로 tokenMixin을 추가해, mapState나 mapGetters를 import하게 되는 코드를 쓰지 않고 깔끔하게 쓸 수 있게 만들었다. tokenMixin은 IsTokenVerified() 메소드 한 가지밖에 갖고 있지 않다. TokenStorage의 verified를 그대로 넘겨준다. verified는 Sign in, Sign out, (...그 외 refresh를 할 때?)같은 액션에만 바뀌어야 한다.

주의할 점 ::: localStorage에 그대로 노출되어 있다. persistedstate때문에 그런데, 옮겨야 한다.

createApp(app).mixin(tokenMixin).use(...로 전역믹스인을 추가했다.

이제 템플릿에서 IsTokenVerified로 간단하게, 다른 코드가 필요없이 조회할 수 있다.

Managing 404 Error

redirect되던 route를 지우고, NotFound 컴포넌트에 props로 url을 넘기도록 했다. 그다음 템플릿에서 접근한 url을 표시했다. 이걸 뭐라고 부르던데 모르겠다.

TODO

  1. url로 접근하는 경우 허용되지 않은 접근이므로 예외처리가 필요하다.
    • 허용되지 않은 접근이라고 알려준 후 리다이렉트되어야 한다.
  2. state.TokenStorage.verified가 localStorage에 노출되어있다. 유저가 임의로 수정이 가능하다!
    • paths에서 특정 state만 지정할 수 있다. verified는 노출시키지 말자.