2014-09-30 3 views
0

Hy,Зачем защищать методы в Spring Security, а не только URL?

  • Недостаточно защищать URL?
  • Есть ли способ, по которому пользователь мог бы вызвать URL-адрес без необходимых учетных данных, и это причина для защиты методов?
  • Настоящий пример, почему безопасные методы необходимы, а не только URL-адреса?

Благодаря

+0

что вы имеете в виду под «обеспеченному метод»? – OhadR

ответ

1

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

Однако есть случаи, когда вам нужна более мелкая защита. Если вы хотите разрешить доступ к данному продукту (id = 5) только его создателю, вы не получаете доступ только с защитой уровня URL. Но вы можете достичь этого с помощью безопасности уровня метода.

Рассмотрите этот URL.

https://myapp.com/products/5 

Вы можете проверить, имеет ли пользователь доступ к этому URL-роли роль REQUIRED_ROLE.

<security:intercept-url pattern="/products/**" access="hasRole('REQUIRED_ROLE')" /> 

Если вам необходимо убедиться, что пользователь также является создателем продукта, вам нужно что-то вроде этого:

... 

@PreAuthorize("#product.creator == authentication.name") 
public void doSomething(Product product); 

... 
+0

Хорошо, спасибо. Два вопроса: - # product.creator: creator - это свойство продукта и должно быть в базе данных. Каким будет поведение по умолчанию, если кто-то вызывает метод и не имеет разрешения (возвратите страницу отказа в доступе? Исключение?) Спасибо – user3254515

+0

Это был просто пример, но в принципе да, создатель - это свойство продукта. Если у пользователя нет требуемого разрешения, будет выбрано «AccessDeniedException», и способ его обработки зависит от вашей конфигурации. – pgiecek

+0

Да, но где он настроен? Для URL-адресов я знаю, что вы можете определить пользовательскую запрещенную страницу. – user3254515