I've searched a lot before posting and every 'solution' that I've found did not work.
I can't get a session value from a different route than the current one.
Routes.php
Route::group(['middleware' => 'web', 'prefix' => 'blog', 'namespace' => 'Modules\Blog\Http\Controllers'], function()
{
Route::get('/','PostController@index');
Route::get('/home',['as' => 'home', 'uses' => 'PostController@index']);
Route::get('auth/login', 'Auth\AuthController@showLoginForm');
Route::post('auth/login', 'Auth\AuthController@login');
Route::group(['middleware' => 'blog.auth'], function(){
Route::get('/admin',['as'=>'dashboard','uses'=>'AdminController@index']);
});
});
Kernel.php
protected $middlewareGroups = [
'web' => [
\ommitedbutcorrect\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class
],
'admin' => [
\Modules\Admin\Http\Middleware\ControllerResolver::class,
],
'admin.auth' => [
\Modules\Admin\Http\Middleware\AdminAuthenticate::class,
],
'blog.auth' => [
\Modules\Blog\Http\Middleware\BlogAuthenticate::class,
],
'api' => [
'throttle:60,1',
],
];
AuthController.php
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/blog/admin/';
public function __construct()
{
$this->middleware($this->guestMiddleware(), ['except' => 'logout']);
}
public function login()
{
dd(\Session::get('foo'));
$userdata = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
if (\Auth::attempt($userdata)) {
\Session::save();
return redirect($this->redirectTo);
}
else{
return 'f*ck';
}
}
public function showLoginForm()
{
\Session::put('foo', 'bar');
return view('blog::Admin.login');
}
Chmod 777 on Storage and Bootstrap folders, session driver database.
It seems that the session is creating itself every time with the request that would explain why I can't get the the value with Session:get('foo') which now returns null.
I wasted 3 days on this already :/.
Would appreciate the help, if you guys need more details / code just say the word.
Fixed by clearing the cache with php artisan cache:clear
I got my project from another person so no matter what changes I did, it used the cached settings(in this case it was using DB sessions and I wanted to use file-based sessions)
I'm not sure why Laravel ships with session middleware in the wrong array, but move the StartSession middleware into the protected middleware group
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
];
If you're on Laravel >= v5.2.27, you need to remove the web
middleware from your app/Http/routes.php
file. As of v5.2.27, all routes inside the app/Http/routes.php
file are already included in the web
middleware group, so adding the middleware again inside the file messes with the sessions.
What new Service Provider signed up?
I guess it was because you use modules instead of the default structure laravel provided.
all routes bind with the web middleware by default in laravel 5.2, however, you use modules and each module has a separated routes.php file. You have to manually bind the routes with the web middleware again otherwise, your session will lost.
That was what I did when I met a similar problem. Please let me know my understanding is correct.