我正在用AngularJS和{a2}构建一个webapp。我想使用Django优秀的权限系统(主要是view
权限),但我不确定如何在纯客户端实现它。在
我知道我可以使用Angular的$interpolate
服务,但我不想将两个框架中的模板标记混合在一起,因为我知道这是一个糟糕的做法。在
我想实现这一点的方法是使用所有适当的用户权限从服务器返回JSON
,如下所示:
{
"username": "John",
"can_view_field1": True,
"can_view_field2": True,
"can_view_field3": False
}
之后,我只需根据用户权限使用Angular的ngIf
销毁或重新创建{
我的问题是这有多安全?在不使用oddjango模板的情况下,有没有更好的方法可以做到这一点?在
在我看来,客户端的一切都应该被认为是不安全的?在
为了安全起见,Django不需要返回任何关于视图的数据,直到Django对权限进行后端检查。因为在客户端,恶意用户只需使用浏览器的JS控制台就可以将布尔值翻转为True。在
因此,基本上,客户端检查应该局限于简单地修改用户界面(例如,隐藏用户无权访问的资源的链接)。但是当Django服务器将数据返回给用户时,Django视图需要自己进行权限检查。在
是的,您可以让AngularJS从restapi获取具有权限的用户配置文件。它比用JSON数据填充Django模板的HTML提供了更好的组织。在
我个人所做的是,一旦用户登录,AngularJS获取用户配置文件,例如名、姓等,并附上一个名为“permissions”的字段,而不是booleans,我只传递用户拥有的权限的名称。在
因为它发送的HTTP字段数量较少,而不是通过所有的HTTP发送数据
底线:
= False
相关问题 更多 >
编程相关推荐