如何确保不会操纵API网址中传递的参数

时间:2016-06-13 01:52:52

标签: php api

我有一个API网址:

  

API /类/ {ID}

我在其中定义了类控制器和show()函数,如下所示:

public function show($id)
{
    $classes = $this->classesService->findById($id);
    if ($classes) {
        return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $classes]);
    } else {
        return response()->json(['message' => 'Not found', 'success' => false, 'status' => 404, 'data' => null]);
    }
}

现在问题是,如果用户仅限于在他注册的类中看到,我从前端的user.info获取class_id并将其传递给API调用URL,但我是想知道用户是否可以调用此api并更改class_id然后他可以看到每个班级,如何确保他只能访问他所属的班级ID?

我的下一个想法是从后端初始化类ID,如下所示:

    public function show($id)
    {
        $classes = $this->classesService->findById(Auth::user()->student->team->class_id);
        if ($classes) {
            return response()->json(['message' => 'Success', 'success' => true, 'status' => 200, 'data' => $classes]);
        } else {
            return response()->json(['message' => 'Not found', 'success' => false, 'status' => 404, 'data' => null]);
        }
    }

但是,如果我想稍后检查每个课程信息和管理员视角,这会让我有问题,因为管理员可以看到每个课程的详细信息...所以这样管理员没有课程ID,它显示空...

任何想法如何实现这样的事情,用户只能看到他的类和管理员可以看到所有类

这需要两个不同的API调用,两个函数吗?

0 个答案:

没有答案