2016-09-28 38 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中删除。因此,对于您的示例,您将拥有一个保存用户当前状态的用户对象,并将其传递给您的函数。所以,你有这样的事情:

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

因此,如果该函数返回true,然后选择标签会显示出来。如果它返回false,它将从DOM中删除。

+0

让对象在DOM中,然后删除它似乎不是很安全。如果javascript被关闭或在某些错误情况下,客户列表是否会显示? –

+0

如果javascript被关闭,整个应用程序将被关闭,因为它纯粹是JavaScript。所以实质上不会有路由或任何可以工作的东西。我们这样做没有任何问题。现在我们也只有管理员页面,所以在'bind()'方法中,我们检查用户是否有权访问该页面。如果没有,我们将它们导航。 – James

+1

@AlienTechnology我应该提到,只有当条件通过时才会呈现给DOM。所以它不会被渲染,然后删除。只有在满足条件时才会呈现。 – James

相关问题