Chuyển hướng đăng nhập Laravel về nhà

Nếu bạn đang làm việc trên Laravel 5. 1 và sử dụng lớp Auth cho mục đích xác thực, rất có thể bạn sẽ gặp phải vấn đề chuyển hướng về nhà sau khi đăng nhập

Mặc dù các tài liệu nói rằng bạn có thể ghi đè hành vi bằng cách đặt giá trị $redirectedPath. Thing là nó vẫn sẽ không làm việc. Sau khi lãng phí một thời gian hợp lý, tôi đã tìm ra vấn đề

Theo mặc định, hàm tạo Auth được định nghĩa là

public function __construct[]
    {        
        $this->middleware['guest', ['except' => 'getLogout']];
    }

Phần mềm trung gian này thực sự gọi đặc điểm RedirectIfAuthenticated. Nếu bạn đi đến định nghĩa, bạn sẽ tìm thấy

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tùy chỉnh hệ thống xác thực trong ứng dụng Laravel 8 của mình để chuyển hướng người dùng sau khi họ đăng ký hoặc đăng nhập vào một tuyến khác tùy thuộc vào vai trò của họ

Hầu hết thời gian, hệ thống xác thực do Laravel 8 cung cấp là đủ để thêm thông tin đăng nhập và đăng ký vào ứng dụng web của bạn

Giàn giáo xác thực hiện được chuyển sang gói

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
5 riêng biệt cung cấp các tuyến đường và chế độ xem vượt trội cho
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6,
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
7 và
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
8 được bao gồm trong dự án của bạn và chịu trách nhiệm cung cấp chức năng của hệ thống xác thực

Xin lưu ý rằng nhóm Laravel khuyến nghị các nhà phát triển sử dụng Jetstream cho các dự án Laravel 8 mới nhưng họ cũng đã cập nhật gói

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
5 lên phiên bản 3 để sử dụng với Laravel 8, đặc biệt nếu bạn đang cập nhật ứng dụng Laravel 7 trước đây của mình lên phiên bản mới nhất

Chuyển hướng xác thực của Laravel 8 bằng cách sử dụng
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0

Ví dụ: nếu bạn xem tệp

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
1, bạn sẽ tìm thấy đoạn mã sau

middleware['guest']->except['logout'];
    }
}

Bạn có thể thấy rằng một biến

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0 tồn tại và có giá trị là
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
3 nơi người dùng được chuyển hướng sau khi họ đăng nhập

Trong hệ thống xác thực tích hợp sẵn của Laravel, bạn có thể tùy chỉnh nhiều mặt, chẳng hạn như lộ trình chuyển hướng bằng cách sử dụng biến

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0 tồn tại trong cả bộ điều khiển đăng nhập và đăng ký

Nếu bạn muốn chuyển hướng người dùng của mình đến các tuyến khác với tuyến mặc định sau khi họ đăng ký hoặc đăng nhập, bạn chỉ cần thay đổi giá trị của

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0

Chuyển hướng xác thực của Laravel 8 bằng phương thức
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6

Bây giờ, nếu bạn muốn chuyển hướng người dùng đến một tuyến tùy thuộc vào một số tiêu chí của người dùng, chẳng hạn như vai trò của họ thì sao?

Hệ thống xác thực của Laravel cũng giải quyết vấn đề đó bằng cách cung cấp phương thức

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6 mà bạn có thể sử dụng thay vì biến
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0

Hãy lấy ví dụ về

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6 của ứng dụng CRM của chúng ta bằng cách thêm phương thức
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6 để chuyển hướng người dùng quản trị đến một tuyến khác ngoài tuyến
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
3

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}

Chúng ta cũng cần làm điều đó trong bộ điều khiển đăng ký. Mở tệp

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
42 và cập nhật nó như sau

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
4

Bạn có thể loại bỏ biến

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0 hoặc để nguyên vì nó sẽ bị ghi đè đơn giản bởi phương thức
user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
6

Tạo Trình điều khiển Laravel 8 cho Quản trị viên

Bây giờ, tất cả những gì bạn cần là tạo một tuyến đường ________ 145 cùng với một tuyến đường ________ 146. Quay trở lại thiết bị đầu cuối của bạn và chạy lệnh thủ công sau

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
0

Tiếp theo mở file

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
47 và cập nhật như sau

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
2

Tiếp theo mở file

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
48 và thêm route vào admin controller như sau

Sự kết luận

Trong hướng dẫn này, chúng tôi đã triển khai chuyển hướng trong ứng dụng Laravel 8 CRM của mình để người dùng quản trị được chuyển hướng đến một tuyến đường khác trong khi người dùng bình thường được chuyển hướng đến tuyến đường chính. Chuyển hướng không thực thi bất kỳ quy tắc bảo mật nào vì người dùng bình thường vẫn có thể truy cập tuyến đường

user[]->role == 'admin'] {
            return '/admin';
        }
        return '/home';
    }

    public function __construct[]
    {
        $this->middleware['guest']->except['logout'];
    }
}
45. Chúng ta cần ngăn chặn điều đó bằng cách sử dụng phần mềm trung gian, chủ đề của hướng dẫn tiếp theo

Làm cách nào để chuyển hướng đến trang chủ sau khi đăng nhập trong laravel?

Phương pháp đơn giản nhất là sử dụng trình trợ giúp chuyển hướng toàn cầu. .
Tuyến đường. get['/dashboard', function[] {
chuyển hướng trở lại ['/ home/dashboard'];

Làm cách nào để chuyển hướng tuyến đường để đăng nhập trong laravel?

if[Auth. check[]] { return Xem. make['view_page']; . route['login']->withInput[]->with['errmessage', 'Vui lòng Đăng nhập để truy cập khu vực hạn chế. return Redirect::route['login']->withInput[]->with['errmessage', 'Please Login to access restricted area. '];

Làm cách nào để chuyển hướng người dùng sau khi đăng nhập trong laravel 8?

Nếu bạn muốn chuyển hướng người dùng của mình đến các tuyến khác với tuyến mặc định sau khi họ đăng ký hoặc đăng nhập, bạn chỉ cần thay đổi giá trị của $redirectTo .

Làm cách nào để chuyển hướng đến một tuyến đường trong laravel?

Laravel chuyển hướng đến tuyến đường đã đặt tên .
chuyển hướng trở lại ['/ home']; . .
Tuyến đường. get['home', 'HomeController@index']->name['home'];.
chuyển hướng trở lại [] -> tuyến đường ['nhà'];.
Tuyến đường. get['/', 'HomeController@index']->name['home'];

Chủ Đề