我正在开发一个带有管理子域的应用,因此我有admin.example.com
和www.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'))
。虽然我不确定这是实现这一目标的正确方法。有什么建议吗?
答案 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()
返回用户首先尝试前往的位置。