在我的 Grails 应用程序中,GUI 的某些部分是使用 JS 自动生成的(例如表格行)。现在,我想根据用户的 Angular 色显示/隐藏其中一些 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" ){ ... }
这行得通,但我不确定这是否是保存/清理/......而且我有点担心它很容易被黑客入侵。
最佳答案
如果您在 GSP 中生成 Javascript,请不要将检查委托(delegate)给 Javascript。而不是 if( '${isAdmin}' == "true" ){ ...JS CODE... }
就写<sec:ifAllGranted(roles="ROLE_ADMIN")>...JS CODE...</sec:ifAllGranted>
.
至于安全性,除非您在 Controller /服务级别检查用户的 Angular 色(因此在您的 Javascript 将调用的位置),否则您永远不会真正安全。
关于javascript - JS 级别的 Grails 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26991663/