Отображение подстраниц на основе сеанса в Laravel 5.8 - PullRequest
0 голосов
/ 05 июня 2019

Я начинающий в Ларавеле. Я использую Laravel 5.8 в моем проекте.

Мне нужно что-то сделать, чтобы пользователь мог просмотреть конкретный маршрут с сеансом php adult = 1.

У меня есть маршрут:

Route::get('/', 'FrontendController@index')->name('index');
Route::get('/sample1', 'FrontendController@sample1')->name('sample1');

Представление SAMPLE1 предназначено для пользователей с php adult = 1 сеанс. Если у пользователя нет такого сеанса - он должен быть автоматически перенаправлен на @ index

Как ты можешь это сделать?

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Этого можно добиться, создав пользовательское промежуточное программное обеспечение, ознакомившись с документацией здесь:

https://laravel.com/docs/5.8/middleware

Вместо использования сеанса вы можете поддерживать пользователя взрослым или нет.в таблице users, что означает, что вы можете получить доступ к этой информации через аутентифицированного пользователя (который доступен во всем приложении).

Например, в вашем приложении, используйте php artisan make:auth, и это выкинет все, что вынужно для регистрации / входа в систему.Перед запуском миграции добавьте новое поле к миграции create_users_table, например, $table->boolean('adult')->default(false);

Затем, после запуска миграции, вы можете создать новое промежуточное программное обеспечение, используя: php artisan make:middleware CheckAdult что-то вроде этого:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAdult
{
    public function handle($request, Closure $next)
    {
        if (!auth()->check() || !auth()->user()->adult) {
            return redirect('/');
        }

        return $next($request);
    }
}

Вышеуказанное промежуточное ПО перенаправит любого, кто еще не вошел в систему или не имеет adult = 0 назад на страницу индекса, в противном случае продолжит выполнение своего запроса.

Затем зарегистрируйте промежуточное ПО и используйте его вмаршруты;согласно документации.

0 голосов
/ 05 июня 2019

вы можете использовать auth и middleware для достижения этой цели.простая логика будет выглядеть примерно так: $id = Auth::user()->adult; в вашем контроллере для проверки пользователей.ofcorse adult - это поле в вашем столе.

//on top of your controller place this
    public function __construct()
        {
            $this->middleware('auth');
        }

//control logic to check user
    if($adult==1){
          //perform unique task
    }else{
       return redirect('/')->with('message','You are not permitted')
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...