Pet*_*yen 3 grails spring-security
是否可以使用Grails中的Spring Security Core插件实现字段级安全性?
我们目前正在使用@Secured注释的方法级安全性,但是有些用户只能更新实体的某些字段.我们可以使用安全标记库来隐藏不应该访问的字段,但这只是客户端限制(因此可以很容易地规避).
Grails的Spring Security Core插件直接对此没有任何支持.但是,没有什么能阻止你在绑定中编写自己的安全性.
例如,在您的控制器中:
package com.example
import grails.plugin.springsecurity.SpringSecurityUtils
class PersonController {
...
def update() {
Person personInstance = Person.get(params.id)
if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN') {
bindData(personInstance, params) // exclude nothing
} else {
bindData(personInstance, params, [exclude: ['someSensitiveProperty', 'anotherProp']])
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
从理论上讲,您甚至可以在您选择的绑定方法中将此绑定逻辑封装在域类本身中(例如personInstance.bindDataWithSecurity(params))
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |