2014-12-22 2 views
0

Я использую весну-безопасность-ядро + весну-безопасность-покой, и в большинстве конечных точек я с помощью URL статических правил в Config.groovyСочетания ограничений доступа безопасности с использованием Grails

например,

'/app/clientdata/**':    ['IS_AUTHENTICATED_FULLY'], 
'/app/opendata/**':    ['permitAll'],  
'/app/secretdata/**':    ['hasRole("ADMIN_ROLE")'], 

Однако для некоторых конечных точек я заинтересован в ограничениях по HTTP метод (GET, POST, ...) или с помощью метода объекта.

Вопрос в том ... должен/может ли я смешивать различные подходы к обеспечению безопасности (url static rules + аннотация, основанная на классе, по методу)?

и

Есть ли вариант, что позволяет мне ограничить на основе HTTP МЕТОДЫ ... например некоторые методы с одной ролью другие с другой ролью?

Спасибо,

ответ

0

Кроме того, как я уже испытал это вполне возможно смешивать эти два различных способа, так что вы можете определить «/ приложение/opendata/**»: [ «permitAll»], а затем определите более ограничительное ограничение на уровне объектных методов с помощью @Secured (["ROLE_XXX"])

1

Да, но это новый и еще не документированы. Вместо использования простой карты, такой как текущий стиль, где ключ является шаблоном, а значение - список ролей и выражений, каждая строка представляет собой карту с тремя ключами; pattern, access и httpMethod с httpMethod является необязательным для каждой строки. Так что это будет выглядеть как

[ 
    [pattern: '/app/clientdata/**', access: ['IS_AUTHENTICATED_FULLY'], httpMethod: 'GET'], 
    [pattern: '/app/opendata/**', access: ['permitAll']], 
    [pattern: '/app/secretdata/**', access: ['hasRole("ADMIN_ROLE")'], httpMethod: 'POST'] 
] 
+0

ничего себе ... это выглядит очень интересно! ... это ядро ​​грааля? ... какая версия? – Rafael

+0

Также ... на самом деле ... то, что я хочу достичь, - это другое ограничение для разных глаголов для одной и той же конечной точки ... так что это может выглядеть mora как: [ [pattern: '/ app/clientdata/**' , доступ: ['IS_AUTHENTICATED_FULLY'], httpMethod: 'GET'], [pattern: '/ app/clientdata/**', access: ['allowAll'], httpMethod: 'POST'], [pattern: '/app/clientdata/** ', access: [' hasRole ("ADMIN_ROLE") '], httpMethod:' DELETE '] ] ... возможно ли это? – Rafael

+1

Это не в Grails, это в плагине версии 2.0-RC4. Вы должны иметь возможность использовать любую комбинацию из трех свойств. –

Смежные вопросы