Redirect 拉雷维尔。在子域之间进行重定向

Redirect 拉雷维尔。在子域之间进行重定向,redirect,laravel-4,laravel-routing,Redirect,Laravel 4,Laravel Routing,我正在开发一个带有管理子域的应用程序,所以我有admin.example.com和www.example.com。我的问题是:每当用户试图进入admin.example.com时,都应该将其重定向到登录页面(如果未登录),该页面位于www.example.com/login 如何从admin.example.com重定向到www.example.com/login??我已经在我的应用程序/routes.php中尝试过这一点: Route::group(['domain' => 'admin

我正在开发一个带有管理子域的应用程序,所以我有
admin.example.com
www.example.com
。我的问题是:每当用户试图进入
admin.example.com
时,都应该将其重定向到登录页面(如果未登录),该页面位于
www.example.com/login

如何从
admin.example.com
重定向到
www.example.com/login
??我已经在我的
应用程序/routes.php中尝试过这一点:

Route::group(['domain' => 'admin.example.com'], function(){
  Route::get('/', 'AdminHomeController@getWelcome');
  Route::any("{all}", function(){App::abort(404);})->where('all', '.*');
  // I used this line to block access routes in admin.example.com not defined here
});

Route::group(['domain' => 'www.example.com'], function()
{
..... 
Route::controller('/', 'AuthController'); // here is defined getLogin
}

有了这段代码,我可以做一个
Redirect::to(action('AuthController@getLogin)
。虽然我不确定这是实现这一目标的正确方法。有什么建议吗?

auth
过滤器附加到您的
admin.example.com
组。在过滤器中,您将检查用户是否经过身份验证;如果不是,则返回Redirect::guest(
www.example.com/login)`

auth
过滤器中:

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::guest( Config::get('app.url').'/login' );
});

登录后,您可以使用
Redirect::destined()
返回用户最初尝试前往的位置。

我尝试了此操作,但它将我重定向到
admin.example.com/login
您可以在
Redirect::guest()中指定完整的URLhttp://www.example.com/login)
。为了防止对基本URL进行硬编码,您可以使用
returnredirect::guest(Config::get('app.url')。/login')。这将从您的
config/app
文件中读取URL,您可以根据您的本地环境和生产环境等进行更改(我编辑了答案以包含此内容)。几乎就在那里,但是调用
return Redirect::guest(config::get('app.URL')。/login')
将我发送到
admin.example.com/www.example.com/login
确保
config/app
中的
'url'
值以
http://
为前缀;它应该是
'url'=>'http://www.example.com“,
Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::guest( Config::get('app.url').'/login' );
});