2013-01-14 2 views
0

다음은 시나리오입니다. 한 페이지 앱을 개발 중입니다.javascript로 프론트 엔드에서 액세스 제어

  • 대부분의 작업은 아약스를 통해 수행됩니다.
  • 페이지가 다른 사용자 로그인 상태 (관리자, 일반 사용자, 방문객 ...)로 다른 구성 요소를 표시해야합니다.
  • 페이지에 너무 많은 애니메이션이 있습니다.

버튼을 클릭 할 때마다 사용자가 로그인했는지 여부를 확인해야한다는 의미입니다 (일부 버튼은 메뉴로 확장 될 수 있으며 구성 요소는 로그인 상태에 따라 부분적으로 표시됨) ?

더 좋은 해결책이 있습니까?

답변

0

예. 그렇습니다. 서버 만이 특정 작업을 수행해야하는 대상과 수행하지 않아야하는 대상을 알고 있습니다. 서버 측에서 점검을 수행해야합니다. 클라이언트를 신뢰하지 마십시오.

1

예, 안전하게하려면 클라이언트가 할 수있는 일과 할 수없는 일을 정식으로 결정해야합니다. javascript는 클라이언트 측에서 실행되기 때문에 누구나 수정할 수 있고 원하는대로 실행할 수 있습니다. 서버는 사용자가 제어하는 ​​서버이며 클라이언트의 모든 요청이 유효한지 확인한 다음 적절하게 수행하거나 거부합니다.

서버는 이러한 방식으로 거의 항상 신뢰할 수 있어야합니다.

0

사용자 권한에 따라 UI 개체 (예 : 메뉴 옵션 포함)를 사용하는 것이 좋습니다. 서버 측 코드는 현재 사용자가 볼 수있는 메뉴 옵션 만 포함하는 JSON을 반환 할 수 있으며이 객체를 사용하여 해당 사용자의 프런트 엔드를 구성 할 수 있습니다. 따라서 사용자가 버튼을 클릭하여 메뉴를 확장하면 아무것도 확인하지 않아도 처음에 서버에서 반환 된 내용 만 표시됩니다.

누군가가 시스템에서 "의미있는"작업을 수행 할 때마다 개체의 이름을 바꾸거나 일부 데이터를 요청하거나 삭제할 때마다 사용 권한을 확인해야합니다. 이 체크는 백엔드 API에 쉽게 내장 될 수 있습니다 ...

+0

3 가지 종류의 사용자 A, B 및 C가 있으며 각각 액세스 가능한 구성 요소 a, b 및 c에 연속적으로 해당한다고 가정합니다. 서버가 먼저 사용자의 종류 (A)를 결정한 다음 '{component : a, data : data}'와 같은 json을 반환한다는 의미였습니다. 서버가 A를 반환하면 UI가 a, b, c 중 어떤 것을 표시할지 여부를 결정하게됩니까? 차이점에 대해 어떻게 생각하십니까? – Aquietzero

관련 문제