我一直在使用 JQuery 和 AngularJS 。我的一个要求是根据登录用户角色显示/隐藏div和其他小部件。我实现了如下解决方案: -
顺便说一下,我了解服务器端安全性是必须的,尽管可以控制登录用户在浏览器中可以看到的小部件。
答案 0 :(得分:0)
您可以查看Angular Schema Forms之类的内容。这将获取一个JSON对象,并使用模板作为HTML将其呈现出来。
另一种方法是为每个小部件使用模板,然后在检索模板之前检查角色。如果未检索到模板,则您的自定义标记将保持为空并且没有内容。
if isAuthorized
get template
else
do nothing or remove the element (your call)
第一个好处是您的标记是从服务器端数据生成的,因此具有更安全的额外好处。第二个也可以。
答案 1 :(得分:0)
请注意,您可以更改javascript中的ANYTHING,包括客户端的全局变量和javascript代码,因此您的服务器无法信任客户端。
如果你想根据全局变量显示/隐藏div,那很好,但你的服务器永远不应该使用该全局变量来确定用户权限。对于隐藏的div,您不应该使用来自DB的数据填充它们,因此即使客户端更改了CSS,他们也无法看到不允许的数据。更不用说他们总是可以检查网络以查看返回的JSON内部的内容。
通常,您不需要存储为全局变量。如果您的用户进行了正确的身份验证,您应该为每个事务(每个ajax请求)验证其身份,并仅返回相关内容。在Angular视图中,只有数据存在时才能ng-if
。