在我的Laravel 12项目中,我使用2个表进行身份验证,即用户表和admin_users表,这些表都可以在模型中扩展身份验证。 当登录的用户导航到URLHttp://127.0.0.1:8000/login_jemaatLaravellaravel将其重定向到Http://127.0.0.1:8000/admin/admin/login页面,我不应该想要。我如何解决此问题,因此,当登录用户导航到URLHttp://127.0.0.1:8000/login_jemaatLaravel将其重定向到Http://127.0.0.1.1:8000/
http:// laravel。用户
class User extends Authenticatable
{
}
Aadminuser
class AdminUser extends Authenticatable
{
}
Config/auth.php:
<?php
return [
'defaults' => [
'guard' => env('AUTH_GUARD', 'users'),
'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
],
'guards' => [
'users' => [
'driver' => 'session',
'provider' => 'users',
],
'admin_users' => [
'driver' => 'session',
'provider' => 'admin_users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admin_users' => [
'driver' => 'eloquent',
'model' => App\Models\AdminUser::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
'expire' => 60,
'throttle' => 60,
],
'admin_users' => [
'provider' => 'admin_users',
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'),
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),
];
bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) {
$middleware->redirectGuestsTo(function (Request $request) {
// Jika URL mengarah ke dashboard (atau sub-path-nya), arahkan ke halaman admin login
if ($request->is('dashboard') || $request->is('dashboard/*')) {
return route('admin.login');
}
// Defaultnya untuk pengguna jemaat
return route('pages.login');
});
})
Route/web.php:
Route::middleware('guest:users')->group(function () {
Route::get('/login_jemaat', function () {
return view('pages.login');
})->name('pages.login');
Route::get('/register_jemaat', function () {
return view('pages.register');
})->name('pages.register');
Route::post('/register_jemaat', [PageController::class, 'register'])->name('register_jemaat');
Route::post('/login_jemaat', [PageController::class, 'login'])->name('login_jemaat');
});
Route::middleware('guest:admin_users')->group(function () {
Route::get('/admin/login', [AdminAuthController::class, 'index'])->name('admin.login');
Route::post('/admin/login', [AdminAuthController::class, 'login'])->name('admin.login.submit');
});
谢谢大家
redirectUsersTo
在
bootstrap/app.php
中进行身份验证用户。
bootstrap/app.php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Request;
return Application::configure(basePath: dirname(__DIR__))
...
->withMiddleware(function (Middleware $middleware) {
...
$middleware->redirectUsersTo(function (Request $request): string {
if (auth()->guard('admin_users')->check()) {
return 'dashboard';
}
return '/';
});
...
})
...