Làm cách nào để xóa lệnh AUTH trong laravel?

Laravel 7/6 loại bỏ lệnh PHP artisan make auth, Hướng dẫn này cho bạn thấy lệnh nào được sử dụng thay vì lệnh make. xác thực. Nói chung, PHP làm cho. lệnh xác thực đã tạo các chế độ xem mặc định như đăng nhập, đăng ký, quên mật khẩu, đặt lại mật khẩu và xác minh email

$ php nghệ nhân làm. xác thực. Thông thường, lệnh này được sử dụng trên các ứng dụng mới. Nó 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 HomeController 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

nghệ nhân php làm. auth Chuyển đến tuyến đường/web. php, xóa các route đã tạo bằng lệnh make. xác thực. Xóa hai dòng này và dự án của bạn sẽ hoạt động tốt như trước

Laravel 6 loại bỏ lệnh PHP artisan make auth, Hướng dẫn này cho bạn biết lệnh nào được sử dụng thay vì make. xác thực. Nói chung, PHP làm cho. lệnh xác thực đã tạo các chế độ xem mặc định như đăng nhập, đăng ký, quên mật khẩu, đặt lại mật khẩu và xác minh email

Như bạn có thể đã biết rằng laravel 6. 0 đã hết. Nhưng một thay đổi lớn được giới thiệu trong laravel 6. 0 là loại bỏ PHP artisan make. xác thực

Phần mềm trung gian CORS có thể chịu trách nhiệm thêm các tiêu đề phù hợp vào tất cả các phản hồi rời khỏi ứng dụng của bạn. Phần mềm trung gian ghi nhật ký có thể ghi nhật ký tất cả các yêu cầu đến ứng dụng của bạn. Có một số phần mềm trung gian được bao gồm trong khung Laravel, bao gồm cả phần mềm trung gian để xác thực và bảo vệ CSRF

php artisan ui vue --auth php artisan ui phản ứng --auth The ui. Lệnh xác thực. Bên cạnh lệnh ui mới, gói laravel/ui đi kèm với một lệnh khác để tạo giàn giáo xác thực. php artisan ui. auth Nếu bạn chạy ui. lệnh auth, lệnh này sẽ tạo các tuyến xác thực, HomeController, chế độ xem xác thực và ứng dụng. lưỡi. tập tin bố trí php

Chúng tôi đã thêm xác thực người dùng bằng cách sử dụng giàn giáo xác thực trong Laravel 6 thông qua gói laravel/ui riêng biệt. Vì vậy, tất cả những gì chúng ta cần làm là tùy chỉnh hệ thống để tắt đăng ký sau khi tạo người dùng quản trị đầu tiên

Cập nhật. Nếu bạn đang sử dụng Laravel <5. 7, tiếp tục. Nhưng nếu bạn đang sử dụng Laravel 5. 7 trở lên, chuyển sang Laravel 5. 7 phần trong bài viết này. Xóa tuyến đường (Laravel < 5. 7) Sau khi bạn gọi nghệ nhân làm. lệnh auth, nó sẽ thêm Auth. routes() trên các tuyến đường/web của bạn. tập tin php

Nếu bạn đang sử dụng Laravel 5. 2 và bạn đã cài đặt chức năng liên quan đến xác thực với php artisan make. auth thì ứng dụng/Http/tuyến của bạn. php sẽ bao gồm tất cả các tuyến liên quan đến xác thực bằng cách gọi Tuyến. xác thực()

Xóa các tuyến đăng ký Đây là bước phức tạp nhất. Theo mặc định, thủ công php thực hiện. lệnh auth đặt Auth này. routes() trong các tuyến đường/web của chúng tôi. tập tin php

Tôi sẽ cung cấp cho bạn hai cách để xóa register route trong laravel. laravel cung cấp các tuyến xác thực theo mặc định và chúng tạo các tuyến đăng nhập, đăng ký, quên mật khẩu nhưng bạn có thể dễ dàng thực hiện bằng cách sử dụng "Auth. các tuyến đường (['đăng ký' => sai]);". Vì vậy, hãy xem cả hai cách xóa register route trong ứng dụng laravel

Sau khi chúng tôi phát hành Trình tạo API có xác thực do Laravel Passport cung cấp, một số khách hàng của chúng tôi đã hỏi cách xóa nó, đối với một số điểm cuối API công khai, không yêu cầu xác thực. Đây là bài viết dành cho bạn

Cảnh báo. rất cẩn thận với phương pháp này. Bài viết này sẽ hướng dẫn bạn cách đặt API ở chế độ công khai, nghĩa là BẤT CỨ AI có thể truy cập nó từ bất cứ đâu. Hãy chắc chắn rằng bạn thực sự muốn làm điều đó


Theo mặc định, đây là route/api của chúng ta. php

Route::group([
    'prefix' => 'v1', 
    'as' => 'api.', 
    'namespace' => 'Api\V1\Admin', 
    'middleware' => ['auth:api']
], function () {
    Route::apiResource('permissions', 'PermissionsApiController');
    Route::apiResource('roles', 'RolesApiController');
    Route::apiResource('users', 'UsersApiController');

    // .. more API endpoints
});

Phần quan trọng nhất ở đây là auth. phần mềm trung gian api, được định nghĩa trong config/auth. php làm 'hộ chiếu' trình điều khiển API

Và nếu bạn cố GET /api/v1/users mà không có bất kỳ xác thực nào, bạn sẽ gặp lỗi “Key path …/storage/oauth-public. khóa không tồn tại hoặc không thể đọc được”

Làm cách nào để xóa lệnh AUTH trong laravel?

Nếu bạn muốn xóa Xác thực đó khỏi một số tuyến đường của mình, chỉ cần tạo một nhóm Tuyến đường riêng không có phần mềm trung gian đó. Giả sử chúng ta muốn công khai danh sách Người dùng. Các tuyến/api. php từ phía trên có thể trông như thế này

Route::group([
    'prefix' => 'v1',
    'as' => 'api.',
    'namespace' => 'Api\V1\Admin',
], function () {

    // These routes will still be secured by Laravel Passport
    Route::group([
        'middleware' => ['auth:api']
    ], function() {
        Route::apiResource('permissions', 'PermissionsApiController');
        Route::apiResource('roles', 'RolesApiController');

        // .. Other secured API endpoints
    });

    // This route will be public
    Route::apiResource('users', 'UsersApiController');

    // .. Other public API endpoints
});

Chúng tôi tạo nhóm Tuyến trong một nhóm. Vì vậy, tất cả các điểm cuối API sẽ có cùng tiền tố và không gian tên, nhưng chỉ một nhóm phụ sẽ có auth. phần mềm trung gian api

Vì vậy, chúng tôi đã làm cho /api/v1/users của chúng tôi có thể truy cập được mà không cần đăng nhập. Nhưng chúng tôi vẫn sẽ nhận được một lỗi khác

“403 Cấm”

Làm cách nào để xóa lệnh AUTH trong laravel?

Và đó là vì yêu cầu của chúng tôi được xác thực nhưng không được phép cho phương pháp cụ thể đó


Xác thực (401) và Ủy quyền (403)

Có một sự khác biệt

  • Xác thực có nghĩa là ai đó đã đăng nhập hay chưa cho toàn bộ hệ thống (trong trường hợp không thành công, nó sẽ trả về Mã trạng thái HTTP 401 Trái phép);
  • Ủy quyền có nghĩa là liệu người dùng đã đăng nhập có quyền đối với khu vực cụ thể của hệ thống hay không (trong trường hợp không thành công, nó sẽ trả về Mã trạng thái HTTP 403 Bị cấm)

Bây giờ, 403 Forbidden xảy ra vì trong Bộ điều khiển của chúng tôi, chúng tôi kiểm tra quyền và chúng tôi mong muốn người dùng đăng nhập. Ví dụ: đây là app/Http/Controllers/Api/V1/Admin/UsersApiController

class UsersApiController extends Controller
{
    public function index()
    {
        abort_if(Gate::denies('user_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        return new UserResource(User::with(['roles'])->get());
    }

    // .. other methods

Xem câu lệnh abort_if()? .
Bây giờ, nếu bạn muốn bỏ qua bước kiểm tra đó, chỉ cần xóa dòng đó trong Trình điều khiển.

Và sau đó… bạn sẽ lấy thành công danh sách người dùng của mình mà không cần bất kỳ xác thực hoặc ủy quyền nào. Ở nơi công cộng

Làm cách nào để xóa lệnh AUTH trong laravel?


Hạn chế các phương thức POST/PUT

Cho đến giờ, tôi đã chỉ cho bạn cách đặt yêu cầu GET ở chế độ công khai. Nhưng đối với các yêu cầu POST hoặc PUT, chúng tôi tạo mã khác một chút. Chúng tôi đặt kiểm tra Auth bên trong các lớp FormRequests thay vì Trình điều khiển

Vì vậy, nếu bạn muốn tạo Người dùng mới, đây là phương thức của bạn trong UsersApiController. php

public function store(StoreUserRequest $request)
{
    $user = User::create($request->all());
    $user->roles()->sync($request->input('roles', []));

    return (new UserResource($user))
        ->response()
        ->setStatusCode(Response::HTTP_CREATED);
}

Có vẻ như không có kiểm tra cho phép, phải không? . php

class StoreUserRequest extends FormRequest
{
    public function authorize()
    {
        abort_if(Gate::denies('user_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        return true;
    }

    public function rules()
    {
        return [
            'name' => 'required',
            // .. other validation rules
        ];
    }
}

Vì vậy, phương thức ủy quyền() trả về đúng hoặc sai, tùy thuộc vào quyền của người dùng.
Đọc thêm về Laravel Form Requests.

Nếu bạn muốn đặt POST đó ở chế độ công khai (tôi không thể tưởng tượng được tại sao, nhưng vẫn vậy), chỉ cần xóa abort_if() đó khỏi đây

Lưu ý. lớp FormRequest này được sử dụng lại cho cả Trình điều khiển web và Trình điều khiển API, vì vậy nếu bạn muốn thay đổi điều gì đó, nó sẽ bị ảnh hưởng trong cả hai trường hợp

À chính nó đấy. Đó là cách bạn có thể xóa auth. api và Laravel Gates để công khai các điểm cuối API của bạn. Nhưng, một lần nữa, hãy cẩn thận với điều đó

Làm cách nào để hoàn tác lệnh php artisan?

Đi tới tuyến đường/web. php, xóa route đã tạo bằng lệnh make. xác thực . Xóa hai dòng này và dự án của bạn sẽ hoạt động tốt như trước.

Làm cách nào để xóa Laravel ui khỏi Laravel?

Bạn có thể xóa gói bằng cách chạy composer remove laravel/ui nhưng bạn cần xóa thủ công các tệp bộ điều khiển và lưỡi cắt. Ngoài ra, bạn cần cập nhật web. tập tin định tuyến php. Lưu câu trả lời này

Làm cách nào để kiểm tra xác thực trong Laravel?

Xác định xem Người dùng hiện tại có được xác thực hay không .
sử dụng Chiếu sáng\Hỗ trợ\Mặt tiền\Auth;
nếu (Xác thực. kiểm tra()) {
// Người dùng đã đăng nhập

Chức năng Auth trong Laravel là gì?

Laravel bao gồm các dịch vụ phiên và xác thực tích hợp thường được truy cập thông qua mặt tiền Xác thực và Phiên. Các tính năng này cung cấp xác thực dựa trên cookie cho các yêu cầu được bắt đầu từ trình duyệt web . Chúng cung cấp các phương thức cho phép bạn xác minh thông tin đăng nhập của người dùng và xác thực người dùng.