2016-09-28 1 views
0

PHP 또는 ASPX와 같은 구식 서버 측 언어에서 HTML 요소는 사용자의 승인을 기반으로 브라우저에 전송되거나 전송 될 수 없습니다. 예를 들어, PHP에서 다음과 같이 할 수 있습니다 :Aurelia에서 안전한 조건부 요소를 만드는 방법은 무엇입니까?

<?php if (user->isInRole('Admin')) { ?> 
    <select id="customerList"> 
     <option value="1">Customer 1</option> 
     <option value="2">Customer 2</option> 
    </select> 
<?php } ?> 

Aurelia는 어떻게 이루어 집니까? 요소가 브라우저로 전송되지 않도록 서버 측 언어를 사용해야합니까?

답변

2

실제로 매우 비슷합니다. if.bind=""을 사용할 수 있습니다. 조건이 충족되지 않으면 기본적으로 DOM에서 제거됩니다. 예를 들어 사용자의 현재 상태를 보유하고 사용자 함수에 전달하는 사용자 객체가 있어야합니다. 이 기능은 true을 반환

<select if.bind="isAdmin(userObj.Role)" id="customerList"> 
    <option value="1">Customer 1</option> 
    <option value="2">Customer 2</option> 
</select> 

그렇다면, 선택 태그가 표시됩니다 : 그래서 당신은 이런 일이있을 것이다. false을 반환하면 DOM에서 삭제됩니다.

+0

개체를 DOM에 넣은 다음 제거하면 보안이 취약 해집니다. 자바 스크립트가 사용 중지되었거나 오류가 발생했는지 고객 목록에 표시하지 않겠습니까? –

+0

자바 스크립트가 해제 된 경우 앱 전체가 자바 스크립트로 간주되어 해제됩니다. 따라서 본질적으로 어떤 라우팅이나 아무 것도 작동하지 않을 것입니다. 우리는 이런 식으로 문제를 겪지 않았습니다. 이제 우리는 admin 전용 페이지를 가지므로'bind()'메소드에서 사용자가 페이지를 방문 할 권한이 있는지 확인합니다. 그렇지 않은 경우, 우리는 그들을 탐색합니다. – James

+1

@AlienTechnology 조건이 충족되면 DOM에만 렌더링된다는 점을 언급해야합니다. 따라서 렌더링되지 않고 제거됩니다. 조건이 충족되면 렌더링됩니다. – James

관련 문제