Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring/GWT:UI端的权限控制_Spring_Gwt - Fatal编程技术网

Spring/GWT:UI端的权限控制

Spring/GWT:UI端的权限控制,spring,gwt,Spring,Gwt,我正在编写一个简单的网页,其中显示了一些基于用户权限的小部件。如果用户具有编辑权限,则页面呈现编辑小部件,否则编辑小部件不会显示 实现这一目标的最佳方式是什么 一、 首先调用服务以获取登录用户的权限,然后根据权限设置可见性:无或阻止。但是,我看到用户可以在浏览器上“检查元素”,并相应地设置可见性。然而,在服务器端,我在DAO上使用@PreAuthorize注释来控制用户操作 如何控制用户界面小部件的可见性而不让用户进行更改(可能是从服务器端进行更改) 更新:我正在寻找GWT中的JSTL等价物 一

我正在编写一个简单的网页,其中显示了一些基于用户权限的小部件。如果用户具有编辑权限,则页面呈现编辑小部件,否则编辑小部件不会显示

实现这一目标的最佳方式是什么

一、 首先调用服务以获取登录用户的权限,然后根据权限设置可见性:无或阻止。但是,我看到用户可以在浏览器上“检查元素”,并相应地设置可见性。然而,在服务器端,我在DAO上使用@PreAuthorize注释来控制用户操作

如何控制用户界面小部件的可见性而不让用户进行更改(可能是从服务器端进行更改)

更新:我正在寻找GWT中的JSTL等价物

一、 首先调用服务以获取登录用户的权限,然后 设置可见性:无或基于权限的块

假设您使用的是JSP,那么使用JSTL标记,而不是设置可见性none或block

<c:if test="${if the user has permission}">Show widget UI code</c:if> 
显示小部件UI代码

如果页面有n个用户没有权限的小部件,为什么要加载所有n个小部件的代码。这是无效的。

如果没有
JSTL
等效于
GWT

但是,有一些第三方(即)库使得基于用户权限显示/隐藏UI元素更加方便

然而,无论您是手动还是使用库,您都应该确保正确地保护后端(据我所知,您是通过使用方法级别的安全性来做到这一点的)

在处理客户端权限/安全性时,需要记住一件重要的事情:
您永远不应该信任来自客户端/浏览器的输入/操作,因为您无法控制它。因此,您必须始终在后端执行安全操作

在我看来,用户是否可以从理论上检查编辑按钮(例如使用浏览器开发工具)并使其可见并不重要,只要后端的编辑操作得到了适当的保护。如果您真的这么担心,您可以从
DOM
中删除元素(即编辑按钮),而不是隐藏它,但这不会使它更安全

  • 编写一个面板,根据客户端代码中的安全设置显示其内容
  • 在安全面板中添加要控制的小部件
  • 该面板现在将根据客户端代码中的安全性控制子级的外观

如前所述,并且您已经认识到,客户端安全性只是可见性控制,因此不足以保护应用程序。

对方法应用安全性,假设您有一个小部件允许用户编辑,现在它在服务器端点击一个方法,请在那里放置安全性。当来自edit的请求到达服务器时,检查用户是否有编辑权限,如果没有,则显示一条您没有所需权限的消息。如果UI上有jsp,您还可以使用EL检查jsp上的权限。显示小部件用户界面code@underdog我说过,我在服务器端使用带有“@PreAuthorize”注释的方法级安全性,然后使用jstl标记,如果用户没有访问权限,则阻止将小部件加载到页面上。在stackoverflow中,如果您将自己的答案向上投票,它会允许您这样做,但当它在服务器上检查用户权限时,它会显示一条消息“您没有权限”。@underdog抱歉,我忘了提到GWT在UI端。所以基本上我是在看4GWT的jstlaware,GWT的jstlaware,这可能会有帮助