Как определить, есть ли в laravel сеанс с такой же переменной?

Я использую Laravel Framework. В контроллере есть функция, которая создает сессию с именем store_id

StoreController.php

function initiate($id)
{
//Some queries
session['store_id' => 'some value'];
}

Теперь, если я запускаю эту функцию на одной вкладке, то session::get('store_id') происходит. Но если я открою другую вкладку в том же браузере, то снова запустите функцию, которая означает session('store_id') будет снова установлен. Как мне справиться с такой ситуацией, что если сеанс уже существует, он должен перенаправить на свой URL-адрес перспективы.

0

Решение

Хорошо, прежде всего, Bruuuhhhh been there and done that

Хорошо, давайте начнем. Вы хотите, чтобы, если уже есть сеанс с store_id затем вы хотите, чтобы пользователь перенаправил или отправил обратно.

В вашем контроллере добавьте это

public function initiate()
{
if(session()->has('store_id'))
{
//What ever your logic
}
else
{
redirect()->to('/store')->withErrors(['check' => "You have session activated for here!."]);
}
}

Скорее всего, вам будет интересно, что пользователь может просто перейти на другой URL после /store/other-urls Да она может.

Чтобы избежать этого. Добавить кастом middleware

php artisan make:middleware SessionOfStore //You can name it anything.

В этом промежуточном программном обеспечении

public function handle($request, Closure $next)
{
if($request->session()->has('store_id'))
{
return $next($request);
}
else
{
return redirect()->back()->withErrors(['privilege_check' => "You are not privileged to go there!."]);
}
return '/home';
}

на главной странице вашего магазина. Добавить anchor tag <a href="/stop">Stop Service</a>

Теперь в вашем web.php

Route::group(['middleware' => 'SessionOfStore'], function()
{
//Add your routes here.
Route::get('/stop', 'StoreController@flushSession');
});

Теперь у вас есть доступ к URL-адресам и вы проверили сеансы.

Сейчас в

public function flushSession()
{
//empty out the session and
return redirect()->to('/home');
}
1

Другие решения

Помощник сеанса Laravel имеет функцию has чтобы проверить это.

if (session()->has('store_id'))
{
// Redirect to the store
}
else
{
// Set the store id
}

Документация содержит все возможные функции, которые можно использовать с помощником сеанса.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector