提问人:jeffri encarnacion 提问时间:10/24/2023 更新时间:10/24/2023 访问量:21
从 Laravel CRUD 应用程序获取重定向循环
Getting a redirect Loop from Laravel CRUD app
问:
尝试访问 /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,但没有运气
答: 暂无答案
评论