swsnu / swppfall2018

22 stars 21 forks source link

HW2 edit/create page에서 preview/write mode에 따른 input field들의 visibility에 관한 질문 #105

Open hojunroks opened 5 years ago

hojunroks commented 5 years ago

*ngIf 를 이용하여 article-title-input 이나 article-content-input을 정의할 경우 element reference가 안 되는 것을 확인했습니다. article-title-input, article-content-input 필드들이 preview mode 에서도 존재하지만 hidden설정된 식으로 코드를 짜도 괜찮을까요? 마찬가지로 preview에서의 필드들도 write mode에서 존재하지만 hidden 설정인 것으로요.

추가질문: 혹시 ngIf를 사용하고 ngif scope 밖에서 element를 reference하는 방법이 있나요? 추가질문2: ngb-tab는 npm으로 bootstrap을 설치해야 이용할 수 있는 건가요? spec에 ngb-tab를 이용해도 된다고 써있는데 관련 내용이 기술돼 있지 않아 질문드립니다.

ahnjaeshin commented 5 years ago

hidden 과 다르게, ngif는 엘러멘트 자체를 dom에서 지우기 때문에 condition이 false면 reference 할 수 없습니다. 해당 질문은 @sanha 검토 부탁 ngif condition이 true가 아니면 존재하지 않기에 reference 불가능합니다 ngb-tab는 ng2-bootstrap을 사용했던것 같습니다.

sanha commented 5 years ago

write / edit tab의 경우 security와 연관이 없으므로 허용하겠습니다. comment의 edit delete 버튼 등은 hide만 하시는 경우 감점이 있을 수 있습니다.

cki86201 commented 5 years ago

비슷한 질문이라 댓글로 남깁니다.

  1. articles/:id 페이지에서, 스펙에 "The edit and delete button for each comment must be visible for the author only." 을 보았을 때 유저의 계정에 따라 화면에 버튼이 나타나는지/안 나타나는지를 결정하면 된다고 생각했습니다. 가령, style="display:none" 등으로 처리했을 경우 엘리먼트는 존재하지만 화면에는 전혀 영향을 주지 않게 되는데 이런 방법도 불허하는 것인가요?

  2. (과제와 상관없는 질문입니다) comment edit delete의 경우 security와 연관이 있다고 하신 것 같습니다. 위와 같이 처리했을 경우 사용자가 hidden된 element를 찾아내 다른 사람의 댓글을 지우는 방법이 있는 건가요?

감사합니다.

skystar-p commented 5 years ago

@cki86201

  1. 예, ngIf로 처리해주시길 바랍니다.
  2. 나중엔 모든 요청이 백엔드에서 처리되므로, 그곳에서 authorization을 수행해주면 malicious한 행동을 필터링 할 수 있습니다.
sanha commented 5 years ago

네, 두 질문 모두에 대한 답변이 될 것 같은데, 일단 문서 내에 존재하는 element라면 javascript 등으로 element를 받아와서 기능을 수행하도록 코드를 작성할 수 있습니다. HW 3으로 미루어진 angular testing 등에서 그런 방식으로 테스트를 수행하게 됩니다. 물론 이런 경우에도 언급해주신 것 처럼 backend에서 authorization을 통해 막아줄 수 있습니다.