Laravel 5 会话在Laravel的基本控制器中不工作
问题 正在用户控制器中扩展基本控制器。我试图检查会话是否为空…如果是,它应该转到登录页面。但由于某些原因,这是行不通的 基本控制器Laravel 5 会话在Laravel的基本控制器中不工作,laravel-5,laravel-5.1,Laravel 5,Laravel 5.1,问题 正在用户控制器中扩展基本控制器。我试图检查会话是否为空…如果是,它应该转到登录页面。但由于某些原因,这是行不通的 基本控制器 class BaseController extends Controller { public function __construct() { $user = Session::get('User'); if ($user == null) { return Redirect('/
class BaseController extends Controller
{
public function __construct() {
$user = Session::get('User');
if ($user == null)
{
return Redirect('/');
}
}
}
class UserController extends BaseController
{
public function AllUsers()
{
$Users = \App\Models\User_Model::all();
return view("/User/List", array("Users" => $Users));
}
}
class AccountController extends Controller
{
public function index()
{
return view("/User/login");
}
}
用户控制器
class BaseController extends Controller
{
public function __construct() {
$user = Session::get('User');
if ($user == null)
{
return Redirect('/');
}
}
}
class UserController extends BaseController
{
public function AllUsers()
{
$Users = \App\Models\User_Model::all();
return view("/User/List", array("Users" => $Users));
}
}
class AccountController extends Controller
{
public function index()
{
return view("/User/login");
}
}
客户控制员
class BaseController extends Controller
{
public function __construct() {
$user = Session::get('User');
if ($user == null)
{
return Redirect('/');
}
}
}
class UserController extends BaseController
{
public function AllUsers()
{
$Users = \App\Models\User_Model::all();
return view("/User/List", array("Users" => $Users));
}
}
class AccountController extends Controller
{
public function index()
{
return view("/User/login");
}
}
路线
Route::get('/', 'AccountController@index');
Route::get('/Users', 'UserController@AllUsers');
这不是正确的方法。使用中间件在每个操作之前运行一些东西。 默认情况下,
auth
中间件处理这个问题
class UserController extends Controller
{
/**
* Instantiate a new UserController instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
}
如果希望中间件为所有请求运行,则将其添加到内核中。在app/Http/Kernel.php
文件中,添加以下内容:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\Authenticate::class, //add this one only, the rest should be there by default.
];
在app\Controllers\AuthController.php
中,更改默认路由:
protected $redirectPath = '/';
只是一个旁注,可能对您的所有请求运行auth,将创建循环,因为用户甚至无法访问登录页面或主页。我不能将代码
$this->中间件('auth')代码>在基本控制器的构造函数中?就像在我的帖子里一样。这样做之后,我得到了404错误。