我正在编写一个简单的网页,它显示了一些基于用户权限的小部件。如果用户拥有编辑权限,页面就会呈现编辑小部件,否则编辑小部件就不会出现。
实现这一目标的最佳途径是什么?
我首先调用一个服务来登录用户的权限,然后根据权限设置可见性:无或阻止。但是,我看到用户可以在浏览器上“检查元素”并相应地设置可见性。然而,在服务器端,我正在使用DAO上的@PreAuthorize注释来控制用户操作。
如何控制UI小部件的可见性,而不需要用户进行更改,可能是在服务器端?
更新:我正在寻找在GWT中等效的JSTL
发布于 2015-09-23 13:08:30
AFAIK没有JSTL等价于GWT。
然而,有一些第三方(即ArcIS)库使基于用户权限的UI元素显示/隐藏更加方便。
但是,无论是手动执行还是使用库,都应该确保正确地保护后端端(据我所知,您正在使用方法级安全性进行此操作)。
在处理客户端权限/安全性时,要记住一件重要的事情:
--您不应该信任来自客户机/浏览器的输入/操作,因为您无法控制它。因此,您必须始终在后端上执行安全性操作。
在我看来,用户是否能够从理论上检查编辑按钮(例如使用Browser Dev Tools )并使其可见并不重要,只要后端上的编辑操作是正确安全的。如果您真的那么担心,您可以从DOM中删除元素(即编辑按钮),而不是隐藏它,但这不会使它更加安全。
发布于 2015-09-23 05:31:15
我首先调用一个服务来登录用户的权限,然后根据权限设置可见性:无或块。
那么,假设您使用的是JSP,而不是设置可见性none或块,而是使用JSTL标记
<c:if test="${if the user has permission}">Show widget UI code</c:if> 如果页面具有用户没有权限的n个小部件,为什么要加载所有n个小部件的代码?这是不表演的。
发布于 2015-09-24 05:52:24
如前所述,并已得到您的认可,客户端安全性只是能见度控制,因此不足以保护应用程序。
https://stackoverflow.com/questions/32731337
复制相似问题