2015-10-29 53 views
1

我正在创建一个自定义注释,用于检查用户是否被授权对某个产品ID进行操作。该注释将放置在我的控制器中的方法中,该方法在Spring托管的应用程序中运行。授权的自定义注释

@ProductDemand(id = {productId}) 
@RequestMapping(value = "/product/{productID}", method = RequestMethod.PUT) 
public Product update(Product toUpdate) { 
    User user = getUserFromHeaderValues(); 
} 

在这种情况下的@ProductDemand是自定义的注释,我将需要创建。如果用户没有被授权作为给定ID的产品,我想返回一个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也可以使用它。

我从来没有写过任何自定义注释,所以如果这没有意义,请让我知道。

感谢, 菲尔

+0

你看着春季安全的例子吗?它提供了一个框架来实现你正在尝试做的事情。 – jalynn2

+0

请检查我的答案http://stackoverflow.com/a/13420500/241986,但老实说,我不记得3年后的细节:-)在那个答案我评估布尔变量btw –

回答