我想在访客尝试访问主页时添加身份验证。我尝试访问主页时收到错误。
Laravel版本:Laravel 5
routes.php错误版本:
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
Route::get('/', ['middleware' => 'auth', function()
{
Route::get('/', 'HomeController@index');
Route::get('pages/{id}', 'PagesController@show');
Route::post('comment/store', 'CommentsController@store');
}]);
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => 'auth'], function()
{
Route::get('/', 'AdminHomeController@index');
Route::resource('pages', 'PagesController');
Route::resource('comments', 'CommentsController');
});
错误记录
at HandleExceptions->handleError('8', 'Undefined offset: 1', 'G:\wamp\www\Laravel5\vendor\compiled.php', '7377', array('request' => object(Request), 'this' => object(Route))) in compiled.php line 7377
正确的原始版本
Route::get('/', 'HomeController@index');
Route::get('pages/{id}', 'PagesController@show');
Route::post('comment/store', 'CommentsController@store');
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'middleware' => 'auth'], function()
{
Route::get('/', 'AdminHomeController@index');
Route::resource('pages', 'PagesController');
Route::resource('comments', 'CommentsController');
});
更新
我知道解决问题但不知道为什么?您可以看到我声明了具有身份验证的路由组的最后四行。当我测试那部分时,我已登录。现在我注销了/admin
前缀,当我尝试访问根URL时,我可以看到登录页面。
所以我的想法是为用户编写一个guestAuth中间件,为管理员编写一个adminAuth中间件。 你有更好的想法吗?
答案 0 :(得分:2)
尝试 -
Route::group(['middleware' => 'auth'], function()
{
Route::get('/', 'HomeController@index');
Route::get('pages/{id}', 'PagesController@show');
Route::post('comment/store', 'CommentsController@store');
});
检查here
答案 1 :(得分:1)
是这行代码吗?
Route::get('/', ['middleware' => 'auth', function()
{
Route::get('/', 'HomeController@index');
Route::get('pages/{id}', 'PagesController@show');
Route::post('comment/store', 'CommentsController@store');
}]);
应该吗?
Route::get('/', ['middleware' => 'auth'], function()
{
Route::get('/', 'HomeController@index');
Route::get('pages/{id}', 'PagesController@show');
Route::post('comment/store', 'CommentsController@store');
});