Laravel 5.4 back()方法重定向次数过多
当我使用back()helper方法时,浏览器显示的重定向太多。 我看到了很多解决方案,但没有一个提供明确的解决方案 这是我的密码 身份验证中间件包含Laravel 5.4 back()方法重定向次数过多,laravel,Laravel,当我使用back()helper方法时,浏览器显示的重定向太多。 我看到了很多解决方案,但没有一个提供明确的解决方案 这是我的密码 身份验证中间件包含 public function handle($request, Closure $next) { if(Auth::check()) { return $next($request); } return back(); } 在kernel.php上添加此中间件 protected $route
public function handle($request, Closure $next)
{
if(Auth::check())
{
return $next($request);
}
return back();
}
在kernel.php上添加此中间件
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic'=>\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings'=>\Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'authenticate' => \App\Http\Middleware\AuthenticationMiddleware::class,
];
名为userController的控制器在构造函数中使用此中间件
public function __construct()
{
$this->middleware('authenticate');
}
下面是routes.php
Route::get('/', 'PostsController@index');
Route::get('/cpanel','UsersController@dashboard');
Route::group(['prefix'=>'cpanel'],function() {
Route::get('/settings','UsersController@settings');
Route::post('/settings','UsersController@storeSettings');
Route::get('/post/create',function() {
return view('posts.newpost');
})->name('createpost');
Route::post('/post/create','PostsController@create');
Route::get('/posts','PostsController@posts');
Route::delete('/post/delete/{id}','PostsController@delete');
});
最后是postsController方法
public function index()
{
$posts = Post::all();
return view('index',['posts'=>$posts]);
}
但当我键入domain/cpanel时,它显示重定向的次数太多。我不明白为什么。您的身份验证中间件在某些情况下会导致循环,比如以前没有访问过。相反,您可以更改
returnback()
到返回重定向()->url('/')
或在\uu构造函数()中应用中间件时忽略某些方法
如果您忘记了,还有一个auth中间件。如果您确实希望在某些情况下重定向,并防止从back方法多次重定向,则可以执行以下操作:
<?php
if(request()->fullUrl() === redirect()->back()->getTargetUrl()){
return redirect('/');
}
return redirect()->back();
粘贴的内容UsersController@dashboardauth中间件返回到/login,但我希望用户返回到以前的url。替换路由::get('/cpanel','UsersController@dashboard'); 要路由::get('/','UsersController@dashboard'); 然后将其移动到cpanel组前缀xbs中。如果您在browser example.com/cpanel中编写,当然您没有登录,您将出现循环情况,因为没有以前的URL可移动到。