Tôi có cuộc gọi API với dữ liệu bài đăng; giả sử đây là quá trình đăng nhập.API Laravel TokenMismatchException
Với phần mở rộng Postman của Chrome tôi gửi, qua POST, tên người dùng và mật khẩu để đăng nhập người sử dụng trong Nhưng tôi nhận được tin nhắn này:.
Illuminate \ Session \ TokenMismatchException
Trong điều khiển cơ sở của tôi, tôi có:
/**
* Initializer.
*
* @return void
*/
public function __construct() {
// CSRF Protection
$this->beforeFilter('csrf', array('on' => 'post'));
// Layouts/Notifications
$this->messageBag = new Illuminate\Support\MessageBag;
}
Khi tôi xóa hàng có beforeFilter, mọi thứ hoạt động tốt. Nhưng điều này không thể là một giải pháp. Mọi cuộc gọi POST sẽ nhận được thông báo lỗi này. Tôi BIẾT rằng tôi cần _token này. Nhưng làm cách nào tôi nhận được mã thông báo này khi tôi gọi từ API? Tôi biết rằng tôi có thể tạo ra một mã thông báo bên trong Laravel, nhưng làm thế nào tôi có thể làm điều này khi tôi gọi từ bên ngoài thông qua API?
Bởi vì bạn cần phải gửi mã thông báo thông qua như một tham số, như bộ lọc CSRF sẽ kiểm tra các lĩnh vực _token của đầu vào. Nếu bạn không gửi, séc này sẽ không thành công. –
ok. sry cho mô tả mơ hồ ... Tôi BIẾT rằng tôi cần _token này.Nhưng làm cách nào tôi nhận được mã thông báo này khi tôi gọi API? Tôi biết rằng tôi có thể tạo ra một mã thông báo bên trong laravel, nhưng làm thế nào tôi có thể làm điều này khi tôi gọi từ bên ngoài thông qua API? – goldlife
Nói chung, API được sử dụng cho các yêu cầu trang web chéo. Vì vậy, bảo vệ CSRF của bạn là vô nghĩa. Nó chủ yếu được sử dụng cho các ứng dụng và trang web. Nhưng vô hiệu hóa nó trên đăng nhập, và sau đó đăng nhập thành công trong gửi người dùng giá trị csrf_token bằng cách gọi người trợ giúp 'csrf_token(); ' –