Laravel。在子域之间进行重定向

时间:2014-10-25 23:28:52

标签: redirect laravel-4 laravel-routing

我正在开发一个带有管理子域的应用,因此我有admin.example.comwww.example.com。我的问题是:每当用户尝试输入admin.example.com时,他应该被重定向到登录页面(如果没有登录),这是在www.example.com/login

如何从admin.example.com重定向到www.example.com/login?我在我的app/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'))。虽然我不确定这是实现这一目标的正确方法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

Route::group(['domain' => 'admin.example.com', 'before' => 'auth'], function(){
....

auth过滤器中:

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

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