我正在学习创建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");
}
如何防止邮递员获取和发布未经授权用户的方法。有解决方法吗?
答案 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"));
}
}