我正在构建一个复杂的网页,它有许多用户/组/权限,用户可以根据ACL(使用Symfony2和Symfony2 ACL)查看全部/部分/没有特定类型的对象。 。AngularJs的服务器端渲染模板
我现在正在处理的是,我不想在前端显示每个UI元素,并且如果用户做了他没有权限的操作,就会抛出403错误。用户没有权限看到的隐藏元素对UX来说会更好。
这就好像我为用户显示产品信息页面,如果用户没有权限在此产品或所有产品上执行此操作,我不想显示编辑/删除按钮(类别范围权限)。
随着Twig和服务器端渲染模板就会很容易如添加一堆权限检查的模板
{% if is_granted('EDIT', product) %}
<button>Edit product</buttom>
{% endif %}
但如何与AngularJs处理这个在客户方?
我想是这样的:
创建服务嫩枝模板渲染服务器端的AngularJs控制器方法。这需要的
id
识别物体,这对用户必须按顺序对权限的参数看到编辑/删除在模板呈现按钮(Twig和is_granted()
处理此服务器侧)用户询问以查看特定产品
/product/1
。路由器templateUrl
将为/templates/product/view.html?object_id=1
,其中object_id
标识对象,在将模板服务器端渲染为授予或拒绝呈现UI元素时应使用该对象。- 产品JSON然后取出并放入模板,它已经被渲染服务器端,并具有一定的角
{{ }}
等待产品数据被加入到。
是否有任何类似的情况下解决了使用您熟悉的其他服务器端技术,可以作为示例引导我迈向成功之路?
我需要检查用户对特定对象的特定操作权限(VIEW/CREATE/EDIT/DELETE)。在每个对象上进行API调用检查都不会有效,我认为。 – nn4n4s
您是否可以扩展API,以便每次前端请求时都将ACL与数据一起发送?然后你需要一些解码该acl数据的服务,但是在UI上它仍然是一个如果每个动作。 –
@ nn4n4s你不应该发送那些loged用户不能'VIEW'的数据如果有一些从它计算出来的聚合值,在后端做。最终用户可以打F12,访问开发工具,并查看**整个**网络流量。所以根本不要发送这样的数据。 –