授权的自定义注释

问题描述 投票:1回答:2

我正在尝试创建一个自定义批注,旨在检查用户是否有权对某个产品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中调用authorize方法。显然,要获取值和连接授权服务之间会有一些麻烦,但是我目前不知道该怎么做。最好是,我希望能够将所有这些都进行打包,并允许某人能够将其导入到他们的项目中,并且仅通过添加注释就可以使用它,必要时还可以添加一个bean。

我之前从未写过任何自定义注释,所以如果这没有意义,请告诉我。

谢谢,菲尔

java spring annotations spring-annotations
2个回答
1
投票

使用spring方面,可以在自定义注释中使用切入点。然后,您可以在之前,之后或周围应用建议。这就是您想要的

这里是示例@AspectJ pointcut for all methods of a class with specific annotation


-1
投票

我们可以避免Spring Security并实现自定义注释来处理请求,请关注此博客以获取实现link

© www.soinside.com 2019 - 2024. All rights reserved.