Xác thực là quá trình xác định thông tin đăng nhập của người dùng. Trong các ứng dụng web, xác thực được quản lý bởi các phiên lấy các tham số đầu vào như email hoặc tên người dùng và mật khẩu để nhận dạng người dùng. Nếu các thông số này khớp, người dùng được cho là đã được xác thực.
Chỉ huy
Laravel sử dụng lệnh sau để tạo biểu mẫu và các bộ điều khiển liên quan để thực hiện xác thực:
php artisan make:auth
Lệnh này giúp tạo giàn giáo xác thực thành công, như được hiển thị trong ảnh chụp màn hình sau:
Bộ điều khiển
Bộ điều khiển được sử dụng cho quá trình xác thực là HomeController .
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use Illuminate\Http\Request;
class HomeController extends Controller{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index() {
return view('home');
}
}
Kết quả là, ứng dụng giàn giáo được tạo sẽ tạo ra trang đăng nhập và trang đăng ký để thực hiện xác thực. Chúng như hình dưới đây –
Đăng nhập
Đăng ký
Xác thực người dùng theo cách thủ công
Laravel sử dụng giao diện Auth giúp xác thực người dùng theo cách thủ công. Nó bao gồm phương pháp thử để xác minh email và mật khẩu của họ. Hãy xem xét các dòng mã sau cho LoginController bao gồm tất cả các chức năng để xác thực –
<?php
// Authentication mechanism
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller{
/**
* Handling authentication request
*
* @return Response
*/
public function authenticate() {
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
}
Laravel – Authorization Ủy quyền
Trong chương trước, chúng ta đã nghiên cứu về quá trình xác thực trong Laravel. Chương này giải thích cho bạn quy trình ủy quyền trong Laravel.
Sự khác biệt giữa xác thực và ủy quyền
Trước khi tiếp tục tìm hiểu sâu hơn về quy trình ủy quyền trong Laravel, chúng ta hãy hiểu sự khác biệt giữa xác thực và ủy quyền.
Trong xác thực , hệ thống hoặc ứng dụng web xác định người dùng của nó thông qua thông tin xác thực mà họ cung cấp. Nếu nó phát hiện ra rằng thông tin xác thực là hợp lệ, chúng được xác thực hoặc nếu không thì không.
Khi ủy quyền , hệ thống hoặc ứng dụng web sẽ kiểm tra xem người dùng được xác thực có thể truy cập tài nguyên mà họ đang cố gắng truy cập hoặc yêu cầu hay không. Nói cách khác, nó kiểm tra các quyền và sự cho phép của họ đối với các tài nguyên được yêu cầu. Nếu nó phát hiện ra rằng họ có thể truy cập các tài nguyên, điều đó có nghĩa là họ được ủy quyền.
Do đó, xác thực liên quan đến việc kiểm tra tính hợp lệ của thông tin đăng nhập của người dùng và ủy quyền bao gồm việc kiểm tra các quyền và quyền đối với các tài nguyên mà người dùng đã xác thực có.
Cơ chế ủy quyền trong Laravel
Laravel cung cấp một cơ chế ủy quyền đơn giản bao gồm hai cách chính, đó là Gates và Policies .
Viết Cổng và Chính sách
Cổng được sử dụng để xác định xem người dùng có được phép thực hiện một hành động cụ thể hay không. Chúng thường được định nghĩa trong App / Providers / AuthServiceProvider.php bằng cách sử dụng Gate front . Cổng cũng là các hàm được khai báo để thực hiện cơ chế ủy quyền.
Các chính sách được khai báo trong một mảng và được sử dụng trong các lớp và phương thức sử dụng cơ chế ủy quyền. Các dòng mã sau đây giải thích cho bạn cách sử dụng Gates và Policies để cấp quyền cho người dùng trong ứng dụng web Laravel. Lưu ý rằng trong ví dụ này, chức năng khởi động được sử dụng để cấp quyền cho người dùng.
<?php
namespace App\Providers;
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any application authentication / authorization services.
*
* @param \Illuminate\Contracts\Auth\Access\Gate $gate
* @return void
*/
public function boot(GateContract $gate) {
$this->registerPolicies($gate);
//
}
}
Laravel – Artisan Console / Bảng điều khiển Artisan
Khung công tác Laravel cung cấp ba công cụ chính để tương tác thông qua dòng lệnh, đó là: Artisan, Ticker và REPL . Chương này giải thích chi tiết về Nghệ nhân.
Giới thiệu về Nghệ nhân
Artisan là giao diện dòng lệnh thường được sử dụng trong Laravel và nó bao gồm một tập hợp các lệnh hữu ích để phát triển một ứng dụng web.
Thí dụ
Dưới đây là danh sách một số lệnh trong Artisan cùng với các chức năng tương ứng của chúng –
Để bắt đầu dự án Laravel
php artisan serve
Để kích hoạt cơ chế lưu vào bộ nhớ đệm
php artisan route:cache
Để xem danh sách các lệnh có sẵn do Artisan hỗ trợ
php artisan list
Để xem trợ giúp về bất kỳ lệnh nào và xem các tùy chọn và đối số có sẵn
php artisan help serve
Ảnh chụp màn hình sau đây cho thấy đầu ra của các lệnh được đưa ra ở trên:
Viết lệnh
Ngoài các lệnh được liệt kê trong Artisan, người dùng cũng có thể tạo một lệnh tùy chỉnh có thể được sử dụng trong ứng dụng web. Xin lưu ý rằng các lệnh được lưu trữ trong thư mục app / console / command .
Lệnh mặc định để tạo lệnh do người dùng xác định được hiển thị bên dưới:
php artisan make:console <name-of-command>
Khi bạn nhập lệnh đã cho ở trên, bạn có thể thấy kết quả như được hiển thị trong ảnh chụp màn hình bên dưới:
Tệp được tạo cho DefaultCommand được đặt tên là DefaultCommand.php và được hiển thị bên dưới:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class DefaultCommand extends Command{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct() {
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle() {
//
}
}
Tệp này bao gồm chữ ký và mô tả cho lệnh mà người dùng đã xác định. Hàm công khai có tên là xử lý thực thi các chức năng khi lệnh được thực thi. Các lệnh này được đăng ký trong tệp Kernel.php trong cùng một thư mục.
Bạn cũng có thể tạo lịch trình của nhiệm vụ cho lệnh do người dùng xác định như được hiển thị trong đoạn mã sau:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel {
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
// Commands\Inspire::class,
Commands\DefaultCommand::class
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule) {
// $schedule->command('inspire')
// ->hourly();
}
}
Lưu ý rằng lịch trình của các tác vụ cho lệnh đã cho được xác định trong hàm có tên là lịch biểu , bao gồm một tham số để lập lịch các tác vụ có tham số hàng giờ .
Các lệnh được đăng ký trong mảng lệnh, bao gồm đường dẫn và tên của các lệnh.
Khi lệnh được đăng ký, nó sẽ được liệt kê trong Artisan command. Các giá trị có trong phần chữ ký và mô tả sẽ được hiển thị khi bạn gọi thuộc tính trợ giúp của lệnh được chỉ định.
Hãy để chúng tôi xem cách xem các thuộc tính của lệnh DefaultCommand của chúng tôi . Bạn nên sử dụng lệnh như hình dưới đây:
php artisan help DefaultCommand