我的类中有一些类似如下的方法:
addOrder(long orderId){...}
updateOrder(long orderId, int qty){...}
deleteOrder(long orderId){...}我想给它们添加授权行为。例如:只有当你是订单的所有者时,你才能updateOrder。只有当你是付费用户时,你才能使用addOrder。只有当你的订单的状态是‘新的’,你才能deleteOrder。
做这件事最好的方法是什么?我们能用注解做到这一点吗?
@checkAuthorization
addOrder(long orderId){...}
@checkAuthorization
updateOrder(long orderId, int qty){...}
@checkAuthorization
deleteOrder(long orderId){...}checkAuthorization注释的存在本身应该导致调用一个自定义方法,我将在其中实现该方法,以检查此调用是否被允许。
如果没有注解,还有其他的最佳实践吗?
如果重要的话,这段代码存在于web应用程序(Struts-1)中。
发布于 2019-09-17 15:58:43
像这样的检查可以用面向方面编程(AOP)来执行。一个实际的实现是Spring Security。您还可以使用访问控制列表或自定义实现来检查object permissions。为此,您可以使用Spring表达式语言引用参数:
@PreAuthorize("#c.name == authentication.name")
public void doSomething(@P("c") Contact contact);https://stackoverflow.com/questions/25256670
复制相似问题