从 Laravel CRUD 应用程序获取重定向循环

Getting a redirect Loop from Laravel CRUD app

提问人:jeffri encarnacion 提问时间:10/24/2023 更新时间:10/24/2023 访问量:21

问:

尝试访问 /admin 路由时出现重定向循环 我只希望具有配置文件中正确密码的用户管理员能够执行 crud 操作,我计划然后添加用户路由。我主要创建一个新闻门户。我对Laravel很陌生。

路线

Route::middleware(['OpenAdminLoginWhenPasswordIsNotCorrect', 'OpenAdminPanelWhenPasswordIsCorrect'])->group(function () {
    Route::get('/admin', [AdminLogin::class, 'login'])->name('admin.login');
    Route::post('/admin', [AdminLogin::class, 'loginSubmit'])->name('admin.login.submit');
    Route::get('/admin/news', [NewsController::class, 'index'])->name('admin.news.index');
    Route::get('/admin/news/create', [NewsController::class, 'create'])->name('admin.news.create');
    Route::post('/admin/news/', [NewsController::class, 'store'])->name('admin.news.store');
    Route::get('/admin/news/{news}/edit', [NewsController::class, 'edit'])->name('admin.news.edit');
    Route::put('/admin/news/{news}/update', [NewsController::class, 'update'])->name('admin.news.update');
    Route::delete('/admin/news/{news}/delete', [NewsController::class, 'delete'])->name('admin.news.delete');
});

中间件

class OpenAdminPanelWhenPasswordIsCorrect
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next)
    {
        $userHasAccessToTheContent = Session::get('userHasAccessToTheContent', false);
        if ($userHasAccessToTheContent === true) {
            return $next($request);
        } else {
            return redirect()->route('admin.news.index');
        }
    }
}
class OpenAdminLoginWhenPasswordIsNotCorrect
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next)
    {
        $userHasAccessToTheContent = Session::get('userHasAccessToTheContent', false);
        if ($request->route()->named('admin.login')) {
            return $next($request);
        }
        if ($userHasAccessToTheContent === false && $request->path() !== '/admin/news') {
            return redirect()->route('admin.login');
        } else {
            return $next($request);
        }
    }
}

控制器

class AdminLogin extends Controller
{
    public function login()
    {
        return view('admin.login');
    }

    public function loginSubmit(Request $request)
    {
        $password = $request->input('password');
        $username = $request->input('username');
        $expectedPass = config('admin.password');
        $expectedUser = config('admin.username');
        if ($username === $expectedUser && $password === $expectedPass) {
            Session::put('userHasAccessToTheContent', true);

            return redirect()->route('admin.news.index');
        }

        return redirect()->route('admin.login');
    }
}

尝试检查中间件逻辑并询问倒钩和 gpt,但没有运气

laravel 中间件 http-status-code-302 laravel-middleware

评论


答: 暂无答案