如何防止身份验证的用户访问Laravel12

问题描述 投票:0回答:1

在我的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'); });
谢谢大家
    

php laravel authentication
1个回答
0
投票
document

. 从Laravel 11中,您可以使用

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 '/';
        });
        ...
    })
    ...


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.