2017-01-25 17 views
0

Я использую Grails 3.2.4 и Grails Spring Security Plugin сердечника & REST. Когда запрос к индексу # пользователя, я используюOmit поле пароля от ответа пользователя с помощью Grails Spring Security Plugin Сердечник & ОТДОХНУТЬ

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" 
    }, 
    // ... 

Как я могу настроить этот ответ и устранить поле пароля, к примеру?

ответ

3

Есть несколько способов для достижения этой цели, но самым простым было бы зарегистрировать компонент типа JsonRenderer в resources.groovy, как показано ниже:

import grails.rest.render.json.JsonRenderer 

beans = { 
    userRenderer(JsonRenderer, User) { 
     excludes = ['password'] 
    } 
} 

См https://docs.grails.org/latest/guide/webServices.html#renderers дополнительные пути.

1

Если вы используете JSON-МНЕНИЯ представлены в проекте и ваш контроллер наследует от RestfulController вы могли бы сделать следующее:

Примечания: Я предполагаю, что ваш пользовательский класс называется пользователь

Сначала попробуйте и использовать команду

grails generate-views [yourpackage.]security.User 

где [yourpackage.] не является обязательным и представляет собой имя пакета, в котором вы создали свой класс User, когда вы выполнили s2-quickst искусство.

Если поколение взглядов было успешным, вы найдете каталог с именем пользователя в \ Grails-приложении \ просмотры со следующими файлами

  • _user.gson
  • index.gson
  • show.gson

Они должны быть ваши взгляды 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 

Это может показаться немного более сложным, чем редактирование бобы, но, на мой взгляд, возможно, будет проще найти соответствующий вид, чем проверить resources.groovy, если кто-то хочет отредактировать проект.

Для получения дополнительной информации об этой опции: grails reference to json views