在我的Grails应用程序中,GUI的某些部分是使用JS自动生成的(例如表行)。现在,我想根据用户的角色显示/隐藏这些GUI元素中的一些,例如, ROLE_ADMIN可能会看到“删除”按钮,ROLE_USER可能没有。
我的方法(我正在使用Spring Sec插件):
_myview.gps HTML-part:
<g:set var="isAdmin" value="${sec.ifAllGranted(roles: 'ROLE_ADMIN', "true")}" />
_myview.gps JS-part:
if( '${isAdmin}' == "true" ){ ... }
这样可行,但我不确定这是否是保存/清洁/ ...而且我有点害怕它可能很容易被黑客入侵。
答案 0 :(得分:0)
如果您要在GSP中生成Javascript,请不要将支票委托给Javascript。而不是if( '${isAdmin}' == "true" ){ ...JS CODE... }
只需写<sec:ifAllGranted(roles="ROLE_ADMIN")>...JS CODE...</sec:ifAllGranted>
。
至于安全性,除非您在控制器/服务级别检查用户的角色(因此在Javascript将调用的位置),否则您将永远不会真正安全。