Сессия теряется в Laravel4 на рабочем сервере

Я проверяю, вошел ли пользователь в систему или нет

Class LoginController extends BaseController {

public function getIndex(){
return View::make('login',array('eventname' => Request::segment(1)));
}

public function postIndex(){

$xx = User::where('email','=',Input::get('email'))->where('event','=',$requestedevent)->first();
$eventattempt = Input::get('event');

if ($xx){

if(Auth::attempt($userDetails)){
if(Auth::check()){
// return var_dump($xx->id);
Session::put('username',Auth::user()->name);
Session::put('userid',Auth::user()->id);
Session::put('event',Auth::user()->event);
return Redirect::to($eventattempt.'/form/page1');
}
} else {
return Redirect::to($eventattempt.'/login')->with('login_errors',true);
}

} else {
return Redirect::to($eventattempt.'/login')->with('login_errors',true);
}


}

}

Затем я делаю фильтр в контроллере формы, как это

<?php



Class FormController extends BaseController{



public function __construct(){
$this->beforeFilter('auth');
$this->beforeFilter('eventcheck');


}

}

И мой filters.php выглядит так

/*
|--------------------------------------------------------------------------
| Application & Route Filters
|--------------------------------------------------------------------------
|
| Below you will find the "before" and "after" events for the application
| which may be used to do any work before or after a request into your
| application. Here you may also register your custom route filters.
|
*/

App::before(function($request)
{
//
});


App::after(function($request, $response)
{
//
});

/*
|--------------------------------------------------------------------------
| Authentication Filters
|--------------------------------------------------------------------------
|
| The following filters are used to verify that the user of the current
| session is logged into this application. The "basic" filter easily
| integrates HTTP Basic authentication for quick, simple checking.
|
*/

Route::filter('auth', function()
{
//dd('ssss');

if (Auth::guest()){

if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
dd(Session::get('event'));

return Redirect::guest('login');
}
}
});


Route::filter('auth.basic', function()
{
return Auth::basic();
});


/*
|--------------------------------------------------------------------------
| Guest Filter
|--------------------------------------------------------------------------
|
| The "guest" filter is the counterpart of the authentication filters as
| it simply checks that the current user is not logged in. A redirect
| response will be issued if they are, which you may freely change.
|
*/

Route::filter('guest', function()
{
if (Auth::check()) return Redirect::to('/');
});


/*
|--------------------------------------------------------------------------
| CSRF Protection Filter
|--------------------------------------------------------------------------
|
| The CSRF filter is responsible for protecting your application against
| cross-site request forgery attacks. If this special token in a user
| session does not match the one given in this request, we'll bail.
|
*/

Route::filter('csrf', function()
{
if (Session::token() != Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});


Route::filter('eventcheck',function(){

//dd(Session::get('event'));

switch(Request::segment(1))
{
case 'rescom_summit_bangalore_2016':
$requestedevent = 'Rescom Summit Bangalore 2016';
break;
case 'design_mission_saudi_arabia_2016':
$requestedevent = 'Design Mission Saudi Arabia 2016';
break;
case 'design_mission_north_east_2016':
$requestedevent = 'Design Mission North East 2016';
break;
case 'design_mission_south_west_2016':
$requestedevent = 'Design Mission South West 2016';
break;
case 'design_mission_middle_east_2016':
$requestedevent = 'Design Mission Middle East 2016';
break;
case 'design_mission_south_africa_2016':
$requestedevent = 'Design Mission South Africa 2016';
break;
case 'design_mission_turkey_2016':
$requestedevent = 'Design Mission Turkey 2016';
break;
case 'design_mission_asia_2016':
$requestedevent = 'Design Mission Asia 2016';
break;
case 'design_mission_russia_2016':
$requestedevent = 'Design Mission Russia 2016';
break;
case 'healthscape_series_2016':
$requestedevent = 'Healthscape Series 2016';
break;
case 'hotelier_summit_africa_2016':
$requestedevent = 'Hotelier Summit Africa 2016';
break;
case 'design_mission_middle_east_2016':
$requestedevent = 'Design Mission Middle East 2016';
break;
case 'hotelier_summit_india_0se_2016':
$requestedevent = 'Hotelier Summit India Ose 2016';
break;
case 'hotelier_summit_india_Ffe_2016':
$requestedevent = 'Hotelier Summit India Ffe 2016';
break;

}

if ($requestedevent!=Auth::User()->event){
Auth::logout();
Session::flush();
return Redirect::to(Request::segment(1).'/login')->with('login_errors',true);
}
});

Поэтому я после входа в систему, когда я пытаюсь распечатать Session::get('event') переменная его показывает NULL в моем Производственный сервер , Но не по моему Локальный сервер

Любая идея, почему это происходит

ОБНОВИТЬ

мой сессионный конфиг выглядит так

<?php

return array(

/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
|            "memcached", "redis", "array"|
*/

'driver' => 'cookie',

/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/

'lifetime' => 120,

'expire_on_close' => false,

/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/

'files' => storage_path().'/sessions',

/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/

'connection' => null,

/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/

'table' => 'sessions',

/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/

'lottery' => array(2, 100),

/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/

'cookie' => 'laravel_session',

/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/

'path' => '/',

/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/

'domain' => null,

/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/

'secure' => false,

);

7

Решение

Это может быть так.

Из документов Laravel: https://laravel.com/docs/master/routing

Любые маршруты, не размещенные в группе веб-промежуточного программного обеспечения, не будут иметь
доступ к сессий и защита CSRF, поэтому убедитесь, что все маршруты, которые
Нужно, чтобы эти функции были размещены внутри группы. Как правило, вы будете
Разместите большинство ваших маршрутов в этой группе:

Route::group(['middleware' => ['web']], function () {
//all routes
});

Поместите ваши маршруты в промежуточное ПО, и ваша проблема решится.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]