在Java中使用注释进行授权检查

在Java中使用注释进行授权检查,java,jakarta-ee,web-applications,annotations,Java,Jakarta Ee,Web Applications,Annotations,在我的课堂上,我有如下几种方法: addOrder(long orderId){...} updateOrder(long orderId, int qty){...} deleteOrder(long orderId){...} 我想给它们添加授权行为。例如: 只有当您是订单的所有者时,才能更新订单。 只有当您是付费用户时,才能添加订单。 只有当您的订单处于“新建”状态时,您才能删除订单 最好的方法是什么? 我们可以使用注释来实现这一点吗 @checkAuthorization addOrd

在我的课堂上,我有如下几种方法:

addOrder(long orderId){...}
updateOrder(long orderId, int qty){...}
deleteOrder(long orderId){...}
我想给它们添加授权行为。例如: 只有当您是订单的所有者时,才能更新订单。 只有当您是付费用户时,才能添加订单。 只有当您的订单处于“新建”状态时,您才能删除订单

最好的方法是什么? 我们可以使用注释来实现这一点吗

@checkAuthorization
addOrder(long orderId){...}

@checkAuthorization
updateOrder(long orderId, int qty){...}

@checkAuthorization
deleteOrder(long orderId){...}
checkAuthorization注释本身应该导致对自定义方法的调用,我将在其中实现该方法,并检查是否允许此调用

如果没有注释,还有其他最佳做法吗?

如果重要的话,这段代码存在于web应用程序(Struts-1)中。

类似的检查可以通过面向方面编程(AOP)来执行。一个实际的实现是。您还可以使用访问控制列表(ACL)或自定义实现进行检查。为此,可以使用Spring表达式语言引用参数:

@PreAuthorize("#c.name == authentication.name")
public void doSomething(@P("c") Contact contact);

这个问题有答案吗?