В моем проекте, созданном с помощью Laravel 8 с пакетом vue + inertia + fortify, я использую два охранника: один для обычных пользователей и один для администраторов. но есть только одно перенаправление на просмотр входа в систему.
Я просто хочу показать другой логин обычным пользователям и другой логин администраторам. он должен обнаруживаться промежуточным программным обеспечением, используемым в маршруте. Я могу его отфильтровать, если смогу получить запрошенное имя охранника оттуда.
Вот мой пример маршрута:
<?php
//'auth:users' is normal users guard
Route::group(['middleware' => 'auth:users'], function () {
Route::prefix('/account')->name('account.')->group(function () {
Route::get('/', [AccountController::class, 'index'])->name('index');
});});
//'auth:web' is admin users guard
Route::group(['middleware' => 'auth:web'], function () {
Route::prefix('/admin')->name('admin.')->group(function () {
Route::prefix('/account')->name('account.')->group(function () {
Route::get('/', [AdminAccountController::class, 'index'])->name('index');
});
});
});
промежуточное ПО auth:
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
// both request coming to here i want get middlware name from here
// if('auth:web'){
//redirect to adimin login
// }else{
//redirect to userlogin
//}
if (! $request->expectsJson()) {
return route('admin.login');
}
}
}