Laravel API - 在邮递员

时间:2017-02-25 11:56:43

标签: php laravel postman

我正在学习创建Laravel api。我尝试保护我的数据免受未授权用户的影响,例如:不允许未经授权的用户获取数据并将数据发布到我的应用程序。在浏览器中它可以工作:如果用户没有提供登录凭据,他什么也得不到。在邮递员中,我可以获得没有凭据的所有数据。为什么呢?

public function __construct()
{
    $this->middleware('auth.basic');
    //works in browser but not in postman
}

以JSON:

获取所有课程
public function index()
{
    $lessons =  Lesson::all();

    return $this->respond([
        'data' => $this->transformCollection($lessons->toArray())
    ]);
}

发布方法:(如果我没有给出标题和正文值,我会收到422响应代码)

public function store()
{
    if (!Input::get('title') or !Input::get('body') ){
        return $this->setStatusCode(422)->respondWithError("Parameters failed validation");
    }

    Lesson::create(Input::all());
    return $this->respondCreated("Successfully created");
}

如何防止邮递员获取和发布未经授权用户的方法。有解决方法吗?

1 个答案:

答案 0 :(得分:4)

您应该从邮递员传递令牌并验证它。 Click here to view how to pass token from postman.

$this->validate($request, [
     'token' => 'required',
]);

然后

    public function index()
    {
        $u = UserSession::where('token',$token)->first();
        if(count($u) > 0) {
            $lessons =  Lesson::all();

            return $this->respond([
                'data' => $this->transformCollection($lessons->toArray())
            ]);
        } else {
            return Api::error(100, $inputs, array("Invalid Token")); 
        }
    }