我的类中有如下一些方法:
addOrder(long orderId){...}
updateOrder(long orderId, int qty){...}
deleteOrder(long orderId){...}
我想为它们添加授权行为。例如: 只有当您是订单的所有者时,您才能更新订单。 只有您是付费用户,您才可以添加订单。 只有当您的订单处于"new"状态时,您才可以删除订单。
最好的方法是什么? 我们可以使用注释来做到这一点吗?
@checkAuthorization
addOrder(long orderId){...}
@checkAuthorization
updateOrder(long orderId, int qty){...}
@checkAuthorization
deleteOrder(long orderId){...}
checkAuthorization 注释本身应该导致调用自定义方法,我将在其中检查是否允许此调用。
如果不是注释,还有其他最佳实践吗?
如果重要的话,此代码存在于 Web 应用程序 (Struts-1) 中。
最佳答案
可以使用面向方面的编程 (AOP) 执行此类检查。一个实际的实现是 Spring Security .您也可以查看 object permissions使用访问控制列表 (ACL) 或自定义实现。为此,您可以使用 Spring 表达式语言引用参数:
@PreAuthorize("#c.name == authentication.name")
public void doSomething(@P("c") Contact contact);
关于java - 在 Java 中使用注解进行授权检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256670/