Я использую Laravel Framework. В контроллере есть функция, которая создает сессию с именем store_id
StoreController.php
function initiate($id)
{
//Some queries
session['store_id' => 'some value'];
}
Теперь, если я запускаю эту функцию на одной вкладке, то session::get('store_id')
происходит. Но если я открою другую вкладку в том же браузере, то снова запустите функцию, которая означает session('store_id')
будет снова установлен. Как мне справиться с такой ситуацией, что если сеанс уже существует, он должен перенаправить на свой URL-адрес перспективы.
Хорошо, прежде всего, 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');
}
Помощник сеанса Laravel имеет функцию has
чтобы проверить это.
if (session()->has('store_id'))
{
// Redirect to the store
}
else
{
// Set the store id
}
Документация содержит все возможные функции, которые можно использовать с помощником сеанса.