Laravel 登录和管理面板(身份验证成功后)页面均位于“/”

Laravel login and admin panel (after successful authentication) pages both on "/"

我想让我的应用程序登录和管理面板(成功登录后访问)都可以在“/”上访问。

我使用 SessionsController 的创建方法作为登录部分 (SessionsController.php):

class SessionsController 扩展 \BaseController {

/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
    if ( Auth::check() ) return Redirect::to('homeAdmin');
    //return View::make('homeLogin');
    return View::make('homeLogin');
}
// Other methods, store, destroy...

}

我的路线设置如下 (routes.php):

<?php

// Home page as guest displays a login form
Route::get('/', ['as' => 'homeLogin', 'uses' => 'SessionsController@create']);

// Authentication via the SessionsControlle
Route::resource('sessions', 'SessionsController');

// Pages for logged in users
Route::group(['before' => 'auth'], function()
{
    // Home page with admin panel for authenticated users
    Route::get('/', ['as' => 'homeAdmin']);

    // Other pages from admin panel
    Route::get('manageThis', ['as' => 'manageThis']);
    Route::get('manageThat', ['as' => 'manageThat']);
});

过滤器不变,即(filters.php):

<?php

Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::guest('login');
        }
    }
});

Route::filter('auth.basic', function()
{
    return Auth::basic();
});

Route::filter('guest', function()
{
    if (Auth::check()) return Redirect::to('/');
});

问题是我经常被重定向到“/login”而不是 'homeLogin' 路由。我想来宾过滤器中有一些需要更改的东西,但是当我编辑它时,它变得更糟并且没有解决问题。

您是否尝试过将 homeLogin 置于来宾组中?就像...

Route::group(['before' => 'guest'], function()
{
    Route::get('/', ['as' => 'homeLogin', 'uses' => 'SessionsController@create']);
});

否则,您可以在 controller/route 中以编程方式手动检查:

if(!Auth::user()) { 
    return View::make('guest.page'); 
}

有关更多信息,请同时查看此答案:Laravel 4: Two different view pages for a single URI based on auth status

路由应该是一个,并以编程方式检查登录视图和仪表板的控制器 view.You 此过程有两个路由。

Route::get('/', ['as' => 'homeLogin', 'uses' => 'SessionsController@create']);

Route::get('/', ['as' => 'homeAdmin']); 

删除一个并像这样在控制器上检查它:

if(Auth::user()) { 
    return View::make('dashboard')->with('datas', $yourDatabaseQureiesForDashboard); 
}
else
{
    return View::make('login'); 
}