我的应用程序架构有一个大问题。我有不同的服务,例如:
PlayerService: - createPlayer (方法将在数据库中创建一个播放器,执行一些api调用并调用ScoreService->createScore)
ScoreService: - createScore (方法将在数据库中创建得分条目,并执行一些api调用。
例如,对于两种服务方法,有两种不同的acl权限。
问题是,如果用户有写播放器的权限,但是没有写分数的权限,那么播放器的创建就会失败,而且我的数据状态也不一致,因为一些api调用是在createPlayer方法中完成的。
处理这种情况的最佳方法是什么?可能,我必须在任何方法调用开始时预先检查所有必要的权限。
第二个问题是,事件是什么?如果事件被触发,而侦听器执行一些需要权限的操作,则请求也将失败。
发布于 2015-08-27 11:40:11
当然,在进行任何更改之前,您必须完成所有必需的检查。
但还有别的事。
您说用户可能拥有创建球员的权限,但没有创建分数的权限。如果这是一个有效的情况,"createPlayer“和"createScore”应该在两个不同的步骤中调用。即在您的控制器中(伪代码):
if ($this->userHasCreatePlayerRights($user)) {
$player = $this->container->get('app.player')->createPlayer($user);
}
if ($this->userHasCreateScoreRights($user)) {
$score = $this->container->get('app.score')->createScore($player);
}https://stackoverflow.com/questions/32220385
复制相似问题