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' );
});