Я ищу, чтобы создать пользовательскую аннотацию, предназначенную для проверки того, уполномочен ли пользователь действовать с определенным идентификатором продукта. Аннотации будут помещены в методы моего контроллера, которые запускаются в приложении, управляемом Spring.Пользовательская аннотация для авторизации
@ProductDemand(id = {productId})
@RequestMapping(value = "/product/{productID}", method = RequestMethod.PUT)
public Product update(Product toUpdate) {
User user = getUserFromHeaderValues();
}
В этом сценарии @ProductDemand обычай аннотацию я буду необходимости создавать. Если пользователь не имеет права действовать на продукт с заданным идентификатором, я хотел бы возвращать 403.
То, что я до сих пор является аннотацией:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ProductDemand {
String productId;
}
У меня также есть обслуживание санкционировать эти значения:
public class AuthorizationService {
public boolean authorize(UUID userUUID, String productID) {
//do auth
}
}
то, что я хотел бы сделать, это быть в состоянии поставить эту аннотацию любого способа, и она автоматически вызывается метод авторизации в AuthorizationService. Очевидно, что между ними будет какая-то сантехника, чтобы получить значения и подключить службу авторизации, но я не знаю, как это сделать. Предпочтительно, я хотел бы иметь возможность собрать все это и позволить кому-то иметь возможность импортировать его в свой проект и иметь возможность использовать его, просто добавив аннотации и, возможно, bean-компонент, если это необходимо.
Я никогда не писал каких-либо пользовательских аннотаций, поэтому, если это не имеет смысла, пожалуйста, дайте мне знать.
Спасибо, Phil
Вы смотрели на Spring Security? Он обеспечивает основу для реализации того, что вы пытаетесь сделать. – jalynn2
Пожалуйста, проверьте мой ответ http://stackoverflow.com/a/13420500/241986, но, честно говоря, я не помню подробностей через 3 года после :-) В этом ответе я оцениваю boolean variable btw –