在 ExtJS 客户端中使用 Spring Security 进行访问控制?
我正在使用 Grails 1.3.7、Grails 的 Spring Security 插件和 ExtJS 3.3.1。我的应用程序中将有大约 20 个角色,并使用静态 URL 规则来保护我的控制器层。我的客户端将全部是 ExtJS,因为我刚刚开始使用 ExtJS,我想与你们那里的人核实一下,找出将访问控制集成到 ExtJS 客户端的正确方法。基本上,如何组织代码来确定为给定用户显示 UI 的哪一部分?此外,某些表单对于某些用户来说可能是只读的。
I am using Grails 1.3.7, Spring Security Plugin for Grails, and ExtJS 3.3.1. I will have about 20 roles in my app and use static URL rules to secure my controller layer. My client side will be all ExtJS, as I just started with ExtJS, I'd like to check with you folks there and find out what is the proper way of integrating access control into ExtJS client side. Basically, how to organize the code that determines which part of the UI to display for a given user? And further more, some form maybe read-only for some users.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我们的应用程序中,我们有一个 JSON 编码的用户对象,其中包含该用户的角色/权利。它们在加载时嵌入到页面标题中,以便全局可用。
然后,有一个 hasEntitlement(userObj,Entitlement) 函数来测试我们嵌入的 userObj 中的特定权利。因此,页面中的所有 ExtJs 操作都会在执行操作之前检查此项,并且所有按钮的“disabled”属性都会在 init 时设置为此函数调用。
当然,在使用 Spring 方法级安全性处理来自 UI 的请求之前,我们也会检查所有服务器端,因此,如果有人攻击了前端的 JS,他们也不会损害后端。
In our application we have a JSON encoded user object that contains the Roles/Entitlements for that user. These are embedded in the page header on load so that they're available globally.
Then, there is a hasEntitlement(userObj,Entitlement) function that tests for a specific entitlement in the userObj we embedded. So, all ExtJs actions in the page check this before taking an action, and all buttons' 'disabled' properties are set to this function call on init.
Of course we also check all of this server side before processing a request from the UI using Spring method level security, so if someone hacks the JS on the front end, they have not compromised the back end.