【开发必备,华为Java高级工程师面试题

如果现在有这么一个需求:

在我们的应用程序的第一个版本中,它是没有授权功能,现在的需求是要加一个授权功能。

在上面的示例中,在我们操作订单信息之前(不管是查询还是修改)添加一个检查用户是否为admin的功能。

实现此功能的一种方法是创建Authorization类和isAuthorized方法来检查用户是否被授权。那么我们需要更新OrderServiceImpl的所有方法,并通过调用isAuthorized方法来检查授权。

@Component
public class OrderServiceImpl {
     public Order queryOrder() {
         //判断当前登陆用户是否有权限查询
         if (Authorization.isAuthorised(Session.getUserId())){
             System.out.println("Reading from collectionA");
             return new Order("1","2019-07-11");
         }
     }
    public int updateOrder() {
         //判断当前登陆用户是否有权限修改
         if (Authorization.isAuthorised(Session.getUserId())){
             System.out.println("Writing to collectionA");
             return 1;
         }
     }
}

但是,这种方法存在缺点。我们需要修改OrderServiceImpl类的每个方法,并且在所有方法中重复调用isAuthorized方法的相同代码以检查授权。

如果不更改现有类,能不能完成授

你可能感兴趣的:(程序员,后端,面试,java)