{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ạnLaravel 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ựcVề 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à cookieNhà 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 LaravelKhi 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ốtNgoà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ạnBắ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àyLộ 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ạnLượ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...
1Lệ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ốnxá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...
8protected $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ùngNế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...
5protected function redirectTo[]
{tip} Phương thức
5 sẽ được ưu tiên hơn thuộc tính
use Illuminate\Support\Facades\Auth;
// The user is logged in...
5
use Illuminate\Support\Facades\Auth;
// The user is logged in...
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ìnhTù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ạnPhươ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ốnPhươ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ìnhTruy 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'];
8use 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ạnnamespace 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ựcuse 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
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ề
use Illuminate\Auth\AuthenticationException;
protected function unauthenticated[$request, AuthenticationException $exception]
return $request->expectsJson[]
? response[]->json[['message' => $exception->getMessage[]], 401]
: redirect[]->guest[route['login']];
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 đườngRoute::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 đườngpublic 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_______9Bạ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ìnhuse 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ạnpublic 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'];
9protected function redirectTo[]
0Phươ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ùngPhươ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ạiPhươ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ếnChỉ đị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,
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
Route::get['profile', function [] {
// Only authenticated users may enter...
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ệtTê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ạnprotected 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ùngghi 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
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
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...
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[]
4Cá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àyprotected function redirectTo[]
5Tấ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[]
6Xá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ựcprotected function redirectTo[]
7Xá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áiprotected function redirectTo[]
8Xá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[]
9Khi 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ạnuse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
0Xá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ụnguse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
1Tiế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ùnguse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
3Vô 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ạnuse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
4Sau đó, 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ệuuse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
5{note} Khi phương thức
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 đó
protected function redirectTo[]
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'];
6Như 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ìnhBả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[]
53use Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
7Khi 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ìnhuse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
8Thê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ỉnhuse Illuminate\Support\Facades\Auth;
return Auth::guard['guard-name'];
9Sau 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ạnCuố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ìnhHợ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[]
62use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
// Get the currently authenticated user's ID...
0Hà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ứcHà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ạiPhươ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ấtPhươ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àoPhươ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ôngHợ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[]
76use Illuminate\Support\Facades\Auth;
// Get the currently authenticated user...
// Get the currently authenticated user's ID...
1Giao 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 khaiSự 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