我正在使用 Grails 3.2.4 和Grails Spring Security插件 Core&休息。当请求用户#index 时,我使用
params.max = Math.min(max ?: 10, 100)
respond User.list(params), model: [userCount: User.count()]
响应类似于:
[
{
"id": 3,
"accountExpired": false,
"accountLocked": false,
"enabled": true,
"password": "$2a$10$fdWi7i48Kw5tnpzsjKMUMOQDx7nhglp9tRtDaJHTAi5qOTdIL0t3u",
"passwordExpired": false,
"username": "me"
},
{
"id": 4,
"accountExpired": false,
"accountLocked": false,
"enabled": true,
"password": "$2a$10$3uFrDjJ8AwMsdMbKhExece6cJtQ4DS2e1/jFMIdDHrmqgDGpBgkS2",
"passwordExpired": false,
"username": "master"
},
// ...
如何自定义此响应并删除密码字段,例如?
答案 0 :(得分:3)
有几种方法可以实现这一点,但最简单的方法是在resources.groovy
中注册JsonRenderer
类型的bean,如下所示:
import grails.rest.render.json.JsonRenderer
beans = {
userRenderer(JsonRenderer, User) {
excludes = ['password']
}
}
有关其他方法,请参阅https://docs.grails.org/latest/guide/webServices.html#renderers。
答案 1 :(得分:1)
如果您在项目中使用JSON-VIEWS功能,而您的控制器继承自RestfulController,您还可以执行以下操作:
注意:我假设您的用户类名为用户
首先尝试使用命令
grails generate-views [yourpackage.]security.User
其中[yourpackage。]是可选的,表示执行s2-quickstart命令时创建User类的包的名称。
如果视图的生成成功,您将在 \ grails-app \ views 中找到名为 user 的目录,其中包含以下文件
这些应该是您的用户的json视图。打开 _user.gson 。它应该包含以下内容
import [yourpackage.]security.User
model {
User user
}
json g.render(user)
编辑代码,使其从json渲染中排除密码
import [yourpackage.]security.Usuario
model {
User user
}
json g.render(user, [excludes: ['password']) //This is where you exclude password
这可能看起来比编辑bean要复杂一些,但在我看来,查找相关视图可能更容易,而不是检查 resources.groovy 是否有其他人想编辑该项目。
有关此问题的详细信息,请查看grails reference to json views