尝试重定向时的laravel 6路由问题

时间:2020-03-03 10:38:35

标签: php laravel laravel-6 laravel-6.2

当有人在URL中访问主页时,我试图重定向到登录页面,但始终会显示

这样的错误

未定义路由[admin / login]。

很多问题都存在相同的问题,但不能解决问题。

如果直接输入URL,则相同的路由也有效,但是从Authenticate.php进行的重定向不起作用。

routes / web.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();
// Admin Routes

// Without auth
Route::group(['prefix' => 'admin', 'namespace' => 'Auth'], function () {
  Route::get('/login', 'AdminLoginController@login');

});



Route::group(['prefix' => 'admin', 'namespace' => 'Auth', 'middleware' => 'auth:admin'], function () {

  Route::get('/home', 'AdminLoginController@home');

});

Authenticate.php

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {

            if ($request->is('admin') || $request->is('admin/*')) {
                return route('admin/login');
            } else if ($request->is('vendor') || $request->is('vendor/*')) {
                return route('vendor/login');
            } else {
                return route('login');
            }


        }
    }
}

1 个答案:

答案 0 :(得分:2)

您没有命名路线,因此不能这样称呼他们,您需要使用:

Route::group(['prefix' => 'admin', 'namespace' => 'Auth'], function () {
   // just add the name to the route to call route('login')
   Route::get('/login', 'AdminLoginController@login')->name('login');
});

然后您可以致电:

return route('login');

或者,如果您不想命名路线,请改用:

return redirect('admin/login');

编辑:

我的错误,您使用redirectTo函数,因此只需要返回一个字符串,请使用以下方法:

return 'admin/login';