2016-05-30 4 views
-1

Я использую Larave 5 для моего проекта. В моем проекте я использую laravel default auth, которые используют эту команду php artisan make:auth. И я установить промежуточное программное обеспечение в моем route.php, как показаноКак установить Laravel 5 Middleware auth?

Route::group(['middleware' => 'web'], function() { 

    // Authentication Routes... 
    Route::auth();  
    Route::get('/', 'Auth\[email protected]'); 
    Route::post('auth/login', 'Auth\[email protected]'); 
    Route::get('auth/logout', 'Auth\[email protected]'); 

    // Admin Roles Routes... 
    Route::get('admin/roles', '[email protected]'); 
}); 

Теперь мой вопрос, если я пользователь выхода из системы и нажмите на кнопку браузера обратно логин пользователя и пользователь может получить доступ, как добавлять, редактировать, удалять мнение после выхода из системы. Итак, как я могу справиться с этой ситуацией. Пожалуйста, помогите, я думаю, код, который я пропустил.

ответ

2

Прежде всего, ваш путь :: Auth() не уже логин и функция выхода из системы, если вы запустите «PHP мастерового маршрута: список» в терминале вы можете увидеть, какие маршруты доступны и т.д ..

Во-вторых вы можете создать группу, как показано ниже для вашего администратора вещи:

Route::group(['middleware' => 'web'], function() { 

    // Authentication Routes... 
    Route::auth();  

    // Admin Roles Routes... 
    Route::group(['prefix'=>'admin', 'middleware'=>'auth'], function() { 
     Route::get('roles', '[email protected]'); 
    }); 
}); 

Я надеюсь, что это работает для вас;)

Btw, Документы Laravel сказать вам много ..., так что конечно, вы смотрите их сначала;)

+0

, но после входа из пользователя нажмите на кнопку назад еще все страницы работают я хочу, если пользователь выйти из системы и пользователь нажимает на браузер кнопку назад автоматически перенаправлять на страницу входа –

+0

я должен написать код в другом контроллере для auth? –

+0

Я не думаю, что вы можете изменить кнопку «назад», чтобы перенаправить ее на страницу входа в систему. Вот почему это кнопка возврата. Единственное, что вы можете сделать, это убедиться, что ваши маршруты, которые должны быть защищены, промежуточное промежуточное ПО, поэтому они не могут ничего изменить после выхода из системы. – Rick

1

Первая вещь вам не нужно применять web промежуточное программное обеспечение, как это уже применяется для ваших маршрутов по RouteServiceProvider см https://laravel.com/docs/5.2/middleware#registering-middleware

Во-вторых, при использовании Route:auth() это ярлык для:

$this->get('login', 'Auth\[email protected]'); 
$this->post('login', 'Auth\[email protected]'); 
$this->get('logout', 'Auth\[email protected]'); 

$this->get('register', 'Auth\[email protected]'); 
$this->post('register', 'Auth\[email protected]'); 

$this->get('password/reset/{token?}', 'Auth\[email protected]'); 
$this->post('password/email', 'Auth\[email protected]'); 
$this->post('password/reset', 'Auth\[email protected]'); 

Так вы не нужно определять эти маршруты:

Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 

И наконец, почему вы разместили логин на своей домашней странице?

Route::get('/', 'Auth\[email protected]'); 

Этот пример должен быть работа:

Route::group(['middleware' => 'auth'], function() { 
    Route::get('/', function() { 
     return 'Hello! You are logged in.'; 
    }); 

    // Admin Roles Routes... 
    Route::get('admin/roles', '[email protected]'); 
}); 

Route::auth(); 

С выше, когда неаутентифицированное пользователь пытается получить доступ к домашней странице http://yoursite.com и http://yoursite.com/admin/roles, пользователь будет перенаправлен на http://yoursite.com/login, поскольку эти страницы защищены auth маршрутами промежуточное программное обеспечение.

+0

Это требование, когда сайт загружается на первую страницу, будет логин –

+0

@dhanashri, если это так, тогда вы должны применить промежуточное программное обеспечение 'auth' на свой маршрут главной страницы, если пользователь не войдет в систему, он будет автоматически перенаправлен на страницу входа в систему. – Rifki

+0

Я стараюсь много времени, но я не знаю, в чем моя ошибка .. или в моем многократном контроллере добавлен код для auth –

0

Добавление к @Rick ответ.

Вы также можете вручную установить промежуточное программное обеспечение внутри функции __construct() вашего контроллера.

Пример:

// SomeController.php 

public function __construct() 
{ 

    $this->middleware('auth'); 

} 

Documentation

Смежные вопросы