2017-02-25 24 views
1

私はLaravel APIを作成することを学んでいます。私は許可されていないユーザーから自分のデータを保護しようとします。許可されていないユーザーが自分のアプリケーションにデータを取得して投稿することを許可しないでください。ブラウザでは動作します。ユーザーがログイン資格情報を提供しない場合、彼は何も取得しません。郵便配達員は、資格情報なしですべてのデータを取得できます。どうして?Laravel API - Postmanの権限のないユーザーの保護機能がありません

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()) 
    ]); 
} 

Postメソッド:(私はタイトルと本文の値を与えていない場合、私は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"); 
} 

どのようにしてPostmanが権限のないユーザーのためのメソッドを取得して投稿するのを防ぐことができますか?このための回避策はありますか?

+0

あなたはおそらく、郵便配達中に資格のターンを忘れたのか? –

+0

どこが見えますか? –

+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")); 
     } 
    } 
関連する問題