Thông báo'': Bảo vệ xác thực (api) không được xác định.'', ngoại lệ'': InvalidArgumentException

{tip} Bạn muốn bắt đầu nhanh? . Sau đó, điều hướng trình duyệt của bạn đến

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

5 hoặc bất kỳ URL nào khác được chỉ định cho ứng dụng của bạn. Hai lệnh này sẽ xử lý toàn bộ hệ thống xác thực của bạn

Laravel làm cho việc triển khai xác thực trở nên rất đơn giản. Trên thực tế, hầu hết mọi thứ đều được định cấu hình cho bạn ngay lập tức. Tệp cấu hình xác thực được đặt tại

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

6, chứa một số tùy chọn được ghi lại đầy đủ để điều chỉnh hành vi của các dịch vụ xác thực

Về cốt lõi, các cơ sở xác thực của Laravel được tạo thành từ "người bảo vệ" và "nhà cung cấp". Bộ bảo vệ xác định cách người dùng được xác thực cho từng yêu cầu. Ví dụ: Laravel cung cấp một bộ bảo vệ

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

7 để duy trì trạng thái bằng cách sử dụng lưu trữ phiên và cookie

Nhà cung cấp xác định cách người dùng được truy xuất từ ​​bộ lưu trữ liên tục của bạn. Laravel cung cấp hỗ trợ truy xuất người dùng bằng Eloquent và trình tạo truy vấn cơ sở dữ liệu. Tuy nhiên, bạn có thể tự do xác định các nhà cung cấp bổ sung nếu cần cho ứng dụng của mình

Đừng lo lắng nếu bây giờ tất cả điều này nghe có vẻ khó hiểu. Nhiều ứng dụng sẽ không bao giờ cần sửa đổi cấu hình xác thực mặc định

Cân nhắc cơ sở dữ liệu

Theo mặc định, Laravel bao gồm một

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

8 Eloquent model trong thư mục

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

9 của bạn. Mô hình này có thể được sử dụng với trình điều khiển xác thực Eloquent mặc định. Nếu ứng dụng của bạn không sử dụng Eloquent, bạn có thể sử dụng trình điều khiển xác thực

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

0 sử dụng trình tạo truy vấn Laravel

Khi xây dựng lược đồ cơ sở dữ liệu cho mô hình

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

8, đảm bảo cột mật khẩu có độ dài ít nhất 60 ký tự. Duy trì độ dài cột chuỗi mặc định là 255 ký tự sẽ là một lựa chọn tốt

Ngoài ra, bạn nên xác minh rằng bảng

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

2 [hoặc tương đương] của bạn có chứa một cột chuỗi

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

3 không thể rỗng gồm 100 ký tự. Cột này sẽ được sử dụng để lưu trữ mã thông báo cho người dùng chọn tùy chọn "nhớ tôi" khi đăng nhập vào ứng dụng của bạn

Bắt đầu xác thực nhanh

Laravel cung cấp một số bộ điều khiển xác thực dựng sẵn, được đặt trong không gian tên

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

4.

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5 xử lý đăng ký người dùng mới,

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6 xử lý xác thực,

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

7 xử lý các liên kết gửi email để đặt lại mật khẩu và

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

8 chứa logic để đặt lại mật khẩu. Mỗi bộ điều khiển này sử dụng một đặc điểm để bao gồm các phương thức cần thiết của chúng. Đối với nhiều ứng dụng, bạn hoàn toàn không cần sửa đổi các bộ điều khiển này

Lộ trình

Laravel cung cấp một cách nhanh chóng để dàn dựng tất cả các route và view bạn cần để xác thực bằng một lệnh đơn giản

Lệnh này nên được sử dụng trên các ứng dụng mới và sẽ cài đặt chế độ xem bố cục, chế độ xem đăng ký và đăng nhập, cũng như các tuyến đường cho tất cả các điểm cuối xác thực. Một

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

9 cũng sẽ được tạo để xử lý các yêu cầu sau đăng nhập vào bảng điều khiển của ứng dụng của bạn

Lượt xem

Như đã đề cập trong phần trước, lệnh

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

3 sẽ tạo tất cả các chế độ xem bạn cần để xác thực và đặt chúng vào thư mục

use Illuminate\Support\Facades\Auth;

// The user is logged in...

1

Lệnh

use Illuminate\Support\Facades\Auth;

// The user is logged in...

2 cũng sẽ tạo thư mục

use Illuminate\Support\Facades\Auth;

// The user is logged in...

3 chứa bố cục cơ sở cho ứng dụng của bạn. Tất cả các chế độ xem này đều sử dụng khung CSS Bootstrap, nhưng bạn có thể tự do tùy chỉnh chúng theo cách bạn muốn

xác thực

Bây giờ bạn đã thiết lập các tuyến và chế độ xem cho bộ điều khiển xác thực đi kèm, bạn đã sẵn sàng đăng ký và xác thực người dùng mới cho ứng dụng của mình. Bạn có thể truy cập ứng dụng của mình trong trình duyệt vì bộ điều khiển xác thực đã chứa logic [thông qua đặc điểm của chúng] để xác thực người dùng hiện tại và lưu trữ người dùng mới trong cơ sở dữ liệu

Tùy chỉnh đường dẫn

Khi người dùng được xác thực thành công, họ sẽ được chuyển hướng đến URI

use Illuminate\Support\Facades\Auth;

// The user is logged in...

4. Bạn có thể tùy chỉnh vị trí chuyển hướng sau xác thực bằng cách xác định thuộc tính

use Illuminate\Support\Facades\Auth;

// The user is logged in...

5 trên

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6,

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5 và

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

8

protected $redirectTo = '/';

Tiếp theo, bạn nên sửa đổi phương thức

Route::get['profile', function [] {

// Only authenticated users may enter...

0 của phần mềm trung gian

use Illuminate\Support\Facades\Auth;

// The user is logged in...

9 để sử dụng URI mới của bạn khi chuyển hướng người dùng

Nếu đường dẫn chuyển hướng cần logic tạo tùy chỉnh, bạn có thể xác định phương thức

use Illuminate\Support\Facades\Auth;

// The user is logged in...

5 thay vì thuộc tính

use Illuminate\Support\Facades\Auth;

// The user is logged in...

5

protected function redirectTo[]

{tip} Phương thức

use Illuminate\Support\Facades\Auth;

// The user is logged in...

5 sẽ được ưu tiên hơn thuộc tính

use Illuminate\Support\Facades\Auth;

// The user is logged in...

5

Tùy chỉnh tên người dùng

Theo mặc định, Laravel sử dụng trường

Route::get['profile', function [] {

// Only authenticated users may enter...

5 để xác thực. Nếu bạn muốn tùy chỉnh điều này, bạn có thể xác định phương pháp

Route::get['profile', function [] {

// Only authenticated users may enter...

6 trên

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6 của mình

Tùy chỉnh bảo vệ

Bạn cũng có thể tùy chỉnh "bảo vệ" được sử dụng để xác thực và đăng ký người dùng. Để bắt đầu, hãy xác định một phương thức

Route::get['profile', function [] {

// Only authenticated users may enter...

8 trên

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6,

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5 và

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

8 của bạn. Phương thức này sẽ trả về một thể hiện bảo vệ

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

Xác thực / Tùy chỉnh lưu trữ

Để sửa đổi các trường biểu mẫu được yêu cầu khi người dùng mới đăng ký với ứng dụng của bạn hoặc để tùy chỉnh cách người dùng mới được lưu trữ trong cơ sở dữ liệu của bạn, bạn có thể sửa đổi lớp

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5. Lớp này chịu trách nhiệm xác thực và tạo người dùng mới cho ứng dụng của bạn

Phương pháp

public function __construct[]

$this->middleware['auth'];

3 của

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5 chứa các quy tắc xác thực cho người dùng mới của ứng dụng. Bạn có thể tự do sửa đổi phương pháp này theo ý muốn

Phương thức

public function __construct[]

$this->middleware['auth'];

5 của

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

5 chịu trách nhiệm tạo các bản ghi

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

8 mới trong cơ sở dữ liệu của bạn bằng cách sử dụng Eloquent ORM. Bạn có thể tự do sửa đổi phương pháp này theo nhu cầu của cơ sở dữ liệu của mình

Truy xuất người dùng đã xác thực

Bạn có thể truy cập người dùng được xác thực thông qua mặt tiền

public function __construct[]

$this->middleware['auth'];

8

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

Ngoài ra, sau khi người dùng được xác thực, bạn có thể truy cập người dùng được xác thực thông qua phiên bản

public function __construct[]

$this->middleware['auth'];

9. Hãy nhớ rằng, các lớp gợi ý kiểu sẽ tự động được đưa vào các phương thức điều khiển của bạn

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

Xác định xem người dùng hiện tại có được xác thực hay không

Để xác định xem người dùng đã đăng nhập vào ứng dụng của bạn hay chưa, bạn có thể sử dụng phương thức

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

0 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8, phương thức này sẽ trả về

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

2 nếu người dùng được xác thực

use Illuminate\Support\Facades\Auth;

// The user is logged in...

{tip} Mặc dù có thể xác định xem người dùng có được xác thực hay không bằng phương thức

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

0, nhưng thông thường bạn sẽ sử dụng phần mềm trung gian để xác minh rằng người dùng đã được xác thực trước khi cho phép người dùng truy cập vào một số tuyến/bộ điều khiển nhất định. Để tìm hiểu thêm về điều này, hãy xem tài liệu về

Bảo vệ tuyến đường

Phần mềm trung gian tuyến đường có thể được sử dụng để chỉ cho phép người dùng được xác thực truy cập vào một tuyến đường nhất định. Laravel cung cấp một phần mềm trung gian

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

4, được xác định tại

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

5. Vì phần mềm trung gian này đã được đăng ký trong nhân HTTP của bạn, tất cả những gì bạn cần làm là đính kèm phần mềm trung gian vào định nghĩa tuyến đường

Route::get['profile', function [] {

// Only authenticated users may enter...

Tất nhiên, nếu bạn đang sử dụng bộ điều khiển, bạn có thể gọi phương thức

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

6 từ hàm tạo của bộ điều khiển thay vì gắn trực tiếp nó vào định nghĩa tuyến đường

public function __construct[]

$this->middleware['auth'];

Chuyển hướng người dùng chưa được xác thực

Khi phần mềm trung gian

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

4 phát hiện người dùng trái phép, nó sẽ trả về phản hồi JSON

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

8 hoặc, nếu yêu cầu không phải là yêu cầu AJAX, hãy chuyển hướng người dùng đến ____52_______9

Bạn có thể sửa đổi hành vi này bằng cách xác định hàm

public function __construct[]

$this->middleware['auth:api'];

0 trong tệp

public function __construct[]

$this->middleware['auth:api'];

1 của mình

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

Chỉ định một người bảo vệ

Khi đính kèm phần mềm trung gian

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

4 vào một tuyến đường, bạn cũng có thể chỉ định bộ bảo vệ nào sẽ được sử dụng để xác thực người dùng. Bộ phận bảo vệ được chỉ định phải tương ứng với một trong các khóa trong mảng

public function __construct[]

$this->middleware['auth:api'];

3 của tệp cấu hình

public function __construct[]

$this->middleware['auth:api'];

4 của bạn

public function __construct[]

$this->middleware['auth:api'];

Điều chỉnh đăng nhập

Nếu bạn đang sử dụng lớp

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6 tích hợp sẵn của Laravel, đặc điểm

public function __construct[]

$this->middleware['auth:api'];

6 sẽ được bao gồm trong bộ điều khiển của bạn. Theo mặc định, người dùng sẽ không thể đăng nhập trong một phút nếu họ không cung cấp thông tin đăng nhập chính xác sau nhiều lần thử. Điều chỉnh là duy nhất đối với tên người dùng/địa chỉ e-mail và địa chỉ IP của họ

Xác thực người dùng theo cách thủ công

Tất nhiên, bạn không bắt buộc phải sử dụng bộ điều khiển xác thực đi kèm với Laravel. Nếu bạn chọn loại bỏ các bộ điều khiển này, bạn sẽ cần trực tiếp quản lý xác thực người dùng bằng cách sử dụng các lớp xác thực của Laravel. Đừng lo lắng, đó là một cinch

Chúng tôi sẽ truy cập các dịch vụ xác thực của Laravel thông qua mặt tiền

public function __construct[]

$this->middleware['auth'];

8, vì vậy chúng tôi cần đảm bảo nhập mặt tiền

public function __construct[]

$this->middleware['auth'];

8 ở đầu lớp. Tiếp theo, hãy xem phương thức

public function __construct[]

$this->middleware['auth:api'];

9

protected function redirectTo[]

0

Phương thức

public function __construct[]

$this->middleware['auth:api'];

9 chấp nhận một mảng các cặp khóa/giá trị làm đối số đầu tiên của nó. Các giá trị trong mảng sẽ được sử dụng để tìm người dùng trong bảng cơ sở dữ liệu của bạn. Vì vậy, trong ví dụ trên, người dùng sẽ được lấy giá trị của cột

Route::get['profile', function [] {

// Only authenticated users may enter...

5. Nếu người dùng được tìm thấy, mật khẩu băm được lưu trữ trong cơ sở dữ liệu sẽ được so sánh với giá trị

protected function redirectTo[]

02 được truyền cho phương thức thông qua mảng. Bạn không nên băm mật khẩu được chỉ định làm giá trị

protected function redirectTo[]

02, vì khung sẽ tự động băm giá trị trước khi so sánh nó với mật khẩu được băm trong cơ sở dữ liệu. Nếu hai mật khẩu băm khớp với nhau, phiên xác thực sẽ được bắt đầu cho người dùng

Phương thức

public function __construct[]

$this->middleware['auth:api'];

9 sẽ trả về

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

2 nếu xác thực thành công. Nếu không,

protected function redirectTo[]

06 sẽ được trả lại

Phương thức

protected function redirectTo[]

07 trên bộ chuyển hướng sẽ chuyển hướng người dùng đến URL mà họ đang cố truy cập trước khi bị chặn bởi phần mềm trung gian xác thực. Một URI dự phòng có thể được cung cấp cho phương thức này trong trường hợp không có đích dự kiến

Chỉ định các điều kiện bổ sung

Nếu muốn, bạn cũng có thể thêm các điều kiện bổ sung vào truy vấn xác thực ngoài e-mail và mật khẩu của người dùng. Ví dụ: chúng tôi có thể xác minh rằng người dùng được đánh dấu là "đang hoạt động"

protected function redirectTo[]

1

{note} Trong các ví dụ này,

Route::get['profile', function [] {

// Only authenticated users may enter...

5 không phải là một tùy chọn bắt buộc, nó chỉ được sử dụng làm ví dụ. Bạn nên sử dụng bất kỳ tên cột nào tương ứng với "tên người dùng" trong cơ sở dữ liệu của mình

Truy cập các trường hợp bảo vệ cụ thể

Bạn có thể chỉ định phiên bản bảo vệ nào bạn muốn sử dụng bằng cách sử dụng phương thức

Route::get['profile', function [] {

// Only authenticated users may enter...

8 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8. Điều này cho phép bạn quản lý xác thực cho các phần riêng biệt của ứng dụng bằng cách sử dụng các mô hình hoặc bảng người dùng có thể xác thực hoàn toàn riêng biệt

Tên bảo vệ được truyền cho phương thức

Route::get['profile', function [] {

// Only authenticated users may enter...

8 phải tương ứng với một trong các bảo vệ được định cấu hình trong tệp cấu hình

public function __construct[]

$this->middleware['auth:api'];

4 của bạn

protected function redirectTo[]

2

Đăng xuất

Để đăng xuất người dùng khỏi ứng dụng của bạn, bạn có thể sử dụng phương pháp

protected function redirectTo[]

13 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8. Điều này sẽ xóa thông tin xác thực trong phiên của người dùng

ghi nhớ người dùng

Nếu bạn muốn cung cấp chức năng "nhớ tôi" trong ứng dụng của mình, bạn có thể chuyển một giá trị boolean làm đối số thứ hai cho phương thức

public function __construct[]

$this->middleware['auth:api'];

9, điều này sẽ giữ cho người dùng được xác thực vô thời hạn hoặc cho đến khi họ đăng xuất thủ công. Tất nhiên, bảng

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

2 của bạn phải bao gồm cột chuỗi

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

3, cột này sẽ được sử dụng để lưu trữ mã thông báo "nhớ tôi"

protected function redirectTo[]

3

{tip} Nếu bạn đang sử dụng

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

6 tích hợp được cung cấp cùng với Laravel, logic thích hợp để "ghi nhớ" người dùng đã được triển khai bởi các đặc điểm được sử dụng bởi bộ điều khiển

Nếu bạn đang "ghi nhớ" người dùng, bạn có thể sử dụng phương pháp

protected function redirectTo[]

19 để xác định xem người dùng đã được xác thực hay chưa bằng cách sử dụng cookie "nhớ tôi"

protected function redirectTo[]

4

Các phương thức xác thực khác

Xác thực một trường hợp người dùng

Nếu bạn cần đăng nhập một phiên bản người dùng hiện có vào ứng dụng của mình, bạn có thể gọi phương thức

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

9 với phiên bản người dùng. Đối tượng nhất định phải là một thực hiện của hợp đồng

protected function redirectTo[]

21. Tất nhiên, mô hình

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

8 đi kèm với Laravel đã triển khai giao diện này

protected function redirectTo[]

5

Tất nhiên, bạn có thể chỉ định phiên bản bảo vệ mà bạn muốn sử dụng

protected function redirectTo[]

6

Xác thực người dùng bằng ID

Để đăng nhập người dùng vào ứng dụng bằng ID của họ, bạn có thể sử dụng phương pháp

protected function redirectTo[]

23. Phương thức này chấp nhận khóa chính của người dùng mà bạn muốn xác thực

protected function redirectTo[]

7

Xác thực người dùng một lần

Bạn có thể sử dụng phương pháp

protected function redirectTo[]

24 để đăng nhập người dùng vào ứng dụng cho một yêu cầu duy nhất. Sẽ không có phiên hoặc cookie nào được sử dụng, điều đó có nghĩa là phương pháp này có thể hữu ích khi xây dựng API không trạng thái

protected function redirectTo[]

8

Xác thực cơ bản HTTP

Xác thực cơ bản HTTP cung cấp một cách nhanh chóng để xác thực người dùng ứng dụng của bạn mà không cần thiết lập trang "đăng nhập" chuyên dụng. Để bắt đầu, hãy đính kèm phần mềm trung gian

protected function redirectTo[]

25 vào tuyến đường của bạn. Phần mềm trung gian

protected function redirectTo[]

25 được bao gồm trong khuôn khổ Laravel, vì vậy bạn không cần phải xác định nó

protected function redirectTo[]

9

Khi phần mềm trung gian đã được gắn vào tuyến đường, bạn sẽ tự động được nhắc nhập thông tin đăng nhập khi truy cập tuyến đường trong trình duyệt của mình. Theo mặc định, phần mềm trung gian

protected function redirectTo[]

25 sẽ sử dụng cột

Route::get['profile', function [] {

// Only authenticated users may enter...

5 trên bản ghi người dùng làm "tên người dùng"

Lưu ý về FastCGI

Nếu bạn đang sử dụng PHP FastCGI, xác thực HTTP Basic có thể không hoạt động bình thường ngay lập tức. Các dòng sau sẽ được thêm vào tệp

protected function redirectTo[]

29 của bạn

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

0

Xác thực cơ bản HTTP không trạng thái

Bạn cũng có thể sử dụng Xác thực cơ bản HTTP mà không cần đặt cookie định danh người dùng trong phiên, điều này đặc biệt hữu ích cho xác thực API. Để làm như vậy, hãy xác định một phần mềm trung gian gọi phương thức

protected function redirectTo[]

30. Nếu không có ngoại lệ nào được đưa ra bởi phương pháp

protected function redirectTo[]

30, yêu cầu có thể được chuyển tiếp vào ứng dụng

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

1

Tiếp theo, và đính kèm nó vào một tuyến đường

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

2

Đăng xuất

Để đăng xuất thủ công người dùng khỏi ứng dụng của bạn, bạn có thể sử dụng phương pháp

protected function redirectTo[]

13 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8. Điều này sẽ xóa thông tin xác thực trong phiên của người dùng

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

3

Vô hiệu hóa phiên trên các thiết bị khác

Laravel cũng cung cấp cơ chế vô hiệu hóa và "đăng xuất" phiên của người dùng đang hoạt động trên các thiết bị khác mà không làm mất hiệu lực phiên trên thiết bị hiện tại của họ. Trước khi bắt đầu, bạn nên đảm bảo rằng phần mềm trung gian

protected function redirectTo[]

34 có mặt và không được nhận xét trong nhóm phần mềm trung gian

protected function redirectTo[]

35 của lớp

protected function redirectTo[]

36 của bạn

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

4

Sau đó, bạn có thể sử dụng phương pháp

protected function redirectTo[]

37 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8. Phương pháp này yêu cầu người dùng cung cấp mật khẩu hiện tại của họ, mà ứng dụng của bạn sẽ chấp nhận thông qua biểu mẫu nhập liệu

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

5

{note} Khi phương thức

protected function redirectTo[]

37 được gọi, các phiên khác của người dùng sẽ bị vô hiệu hoàn toàn, nghĩa là họ sẽ bị "đăng xuất" khỏi tất cả các bảo vệ mà họ đã được xác thực trước đó

Thêm bảo vệ tùy chỉnh

Bạn có thể xác định các bộ bảo vệ xác thực của riêng mình bằng cách sử dụng phương pháp

protected function redirectTo[]

40 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8. Bạn nên thực hiện cuộc gọi này tới

protected function redirectTo[]

40 trong một nhà cung cấp dịch vụ. Vì Laravel đã giao hàng với một

protected function redirectTo[]

43, chúng tôi có thể đặt mã trong nhà cung cấp đó

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

6

Như bạn có thể thấy trong ví dụ trên, cuộc gọi lại được chuyển đến phương thức

protected function redirectTo[]

40 sẽ trả về một triển khai của

protected function redirectTo[]

45. Giao diện này chứa một số phương thức bạn sẽ cần thực hiện để xác định một bộ bảo vệ tùy chỉnh. Khi bộ phận bảo vệ tùy chỉnh của bạn đã được xác định, bạn có thể sử dụng bộ phận bảo vệ này trong cấu hình

public function __construct[]

$this->middleware['auth:api'];

3 của tệp cấu hình

public function __construct[]

$this->middleware['auth:api'];

4 của mình

Bảo vệ yêu cầu đóng cửa

Cách đơn giản nhất để triển khai hệ thống xác thực dựa trên yêu cầu HTTP tùy chỉnh là sử dụng phương thức

protected function redirectTo[]

48. Phương pháp này cho phép bạn nhanh chóng xác định quy trình xác thực của mình bằng cách sử dụng một Đóng duy nhất

Để bắt đầu, hãy gọi phương thức

protected function redirectTo[]

48 trong phương thức

protected function redirectTo[]

50 của phương thức

protected function redirectTo[]

43 của bạn. Phương thức

protected function redirectTo[]

52 chấp nhận tên bảo vệ làm đối số đầu tiên của nó. Tên này có thể là bất kỳ chuỗi nào mô tả bộ phận bảo vệ tùy chỉnh của bạn. Đối số thứ hai được truyền cho phương thức phải là một Đóng nhận yêu cầu HTTP đến và trả về một phiên bản người dùng hoặc, nếu xác thực không thành công,

protected function redirectTo[]

53

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

7

Khi bộ phận bảo vệ tùy chỉnh của bạn đã được xác định, bạn có thể sử dụng bộ phận bảo vệ này trong cấu hình

public function __construct[]

$this->middleware['auth:api'];

3 của tệp cấu hình

public function __construct[]

$this->middleware['auth:api'];

4 của mình

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

8

Thêm nhà cung cấp người dùng tùy chỉnh

Nếu bạn không sử dụng cơ sở dữ liệu quan hệ truyền thống để lưu trữ người dùng của mình, bạn sẽ cần mở rộng Laravel với nhà cung cấp người dùng xác thực của riêng bạn. Chúng tôi sẽ sử dụng phương pháp

protected function redirectTo[]

56 trên mặt tiền

public function __construct[]

$this->middleware['auth'];

8 để xác định nhà cung cấp người dùng tùy chỉnh

use Illuminate\Support\Facades\Auth;

return Auth::guard['guard-name'];

9

Sau khi bạn đã đăng ký nhà cung cấp bằng phương pháp

protected function redirectTo[]

56, bạn có thể chuyển sang nhà cung cấp người dùng mới trong tệp cấu hình

public function __construct[]

$this->middleware['auth:api'];

4 của mình. Đầu tiên, xác định một

protected function redirectTo[]

56 sử dụng trình điều khiển mới của bạn

Cuối cùng, bạn có thể sử dụng nhà cung cấp này trong cấu hình

public function __construct[]

$this->middleware['auth:api'];

3 của mình

Hợp đồng nhà cung cấp người dùng

Việc triển khai

protected function redirectTo[]

62 chỉ chịu trách nhiệm tìm nạp triển khai

protected function redirectTo[]

21 ra khỏi hệ thống lưu trữ liên tục, chẳng hạn như MySQL, Riak, v.v. Hai giao diện này cho phép các cơ chế xác thực của Laravel tiếp tục hoạt động bất kể dữ liệu người dùng được lưu trữ như thế nào hoặc loại lớp nào được sử dụng để thể hiện nó

Chúng ta hãy xem hợp đồng

protected function redirectTo[]

62

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

0

Hàm

protected function redirectTo[]

65 thường nhận một khóa đại diện cho người dùng, chẳng hạn như ID tăng tự động từ cơ sở dữ liệu MySQL. Việc triển khai

protected function redirectTo[]

66 khớp với ID sẽ được truy xuất và trả về theo phương thức

Hàm

protected function redirectTo[]

67 truy xuất một người dùng theo tên duy nhất của họ là

protected function redirectTo[]

68 và "nhớ tôi"

protected function redirectTo[]

69, được lưu trữ trong trường

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

3. Như với phương pháp trước đó, việc triển khai

protected function redirectTo[]

66 sẽ được trả lại

Phương thức

protected function redirectTo[]

72 cập nhật trường

protected function redirectTo[]

73

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller

* Update the user's profile.

public function update[Request $request]

// $request->user[] returns an instance of the authenticated user...

3 với trường

protected function redirectTo[]

69 mới. Mã thông báo mới được chỉ định khi đăng nhập "nhớ tôi" thành công hoặc khi người dùng đăng xuất

Phương thức

protected function redirectTo[]

76 nhận mảng thông tin đăng nhập được chuyển đến phương thức

protected function redirectTo[]

77 khi cố gắng đăng nhập vào một ứng dụng. Sau đó, phương thức này sẽ "truy vấn" bộ lưu trữ liên tục cơ bản cho người dùng khớp với các thông tin xác thực đó. Thông thường, phương thức này sẽ chạy truy vấn với điều kiện "ở đâu" trên

protected function redirectTo[]

78. Sau đó, phương thức sẽ trả về một triển khai của

protected function redirectTo[]

66. Phương pháp này không nên cố gắng thực hiện bất kỳ xác thực hoặc xác thực mật khẩu nào

Phương thức

protected function redirectTo[]

80 phải so sánh

protected function redirectTo[]

73 đã cho với

protected function redirectTo[]

82 để xác thực người dùng. Ví dụ: phương pháp này có thể nên sử dụng

protected function redirectTo[]

83 để so sánh giá trị của

protected function redirectTo[]

84 với giá trị của

protected function redirectTo[]

85. Phương thức này sẽ trả về

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated[$request, AuthenticationException $exception]

return $request->expectsJson[]

? response[]->json[['message' => $exception->getMessage[]], 401]

: redirect[]->guest[route['login']];

2 hoặc

protected function redirectTo[]

06 cho biết mật khẩu có hợp lệ hay không

Hợp đồng xác thực

Bây giờ chúng ta đã khám phá từng phương pháp trên

protected function redirectTo[]

88, hãy xem qua hợp đồng

protected function redirectTo[]

66. Hãy nhớ rằng, nhà cung cấp phải trả về các triển khai của giao diện này từ các phương thức

protected function redirectTo[]

65,

protected function redirectTo[]

67 và

protected function redirectTo[]

76

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

1

Giao diện này đơn giản. Phương thức

protected function redirectTo[]

93 sẽ trả về tên của trường "khóa chính" của người dùng và phương thức

protected function redirectTo[]

94 sẽ trả về "khóa chính" của người dùng. Trong phần phụ trợ của MySQL, một lần nữa, đây sẽ là khóa chính tăng tự động.

protected function redirectTo[]

95 sẽ trả về mật khẩu băm của người dùng. Giao diện này cho phép hệ thống xác thực hoạt động với bất kỳ lớp Người dùng nào, bất kể bạn đang sử dụng lớp trừu tượng lưu trữ hoặc ORM nào. Theo mặc định, Laravel bao gồm một lớp

protected function redirectTo[]

96 trong thư mục

use Illuminate\Support\Facades\Auth;

// Get the currently authenticated user...

// Get the currently authenticated user's ID...

9 thực hiện giao diện này, vì vậy bạn có thể tham khảo lớp này để biết ví dụ triển khai

Sự kiện

Laravel phát sinh nhiều sự kiện trong quá trình xác thực. Bạn có thể đính kèm người nghe với những sự kiện này trong

protected function redirectTo[]

98 của bạn

Chủ Đề