1 回答

TA貢獻1803條經(jīng)驗 獲得超3個贊
您需要在調(diào)用之前初始化您的會話session()->get('yourvar')
。
這應(yīng)該工作:
$session?=?session(); $session()->get('username');
但是,正如您的帖子所說,如果您需要檢查每個控制器是否需要會話,那么您絕對應(yīng)該查看過濾器并創(chuàng)建一個自定義過濾器來檢查是否存在會話。
它可能看起來像這樣app/Filters
:
<?php
namespace App\Filters;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
class LoginFilter implements FilterInterface {
? ? public function before(RequestInterface $request) {
? ? ? ? $session = session();
? ? ? ? if($session->has('username')) {
? ? ? ? ? ? return redirect()->to('/login');?
? ? ? ? }
? ? }
? ? //--------------------------------------------------------------------
? ? public function after(RequestInterface $request, ResponseInterface $response) {
? ? ? ? // Do something here
? ? ? ? }
}
如果你想實現(xiàn)一個過濾器,不要忘記在Config/Filters.php
// Makes reading things below nicer,
? ? // and simpler to change out script that's used.
? ? public $aliases = [
? ? ? ? 'csrf'? ? ? ?=> \CodeIgniter\Filters\CSRF::class,
? ? ? ? 'toolbar'? ? => \CodeIgniter\Filters\DebugToolbar::class,
? ? ? ? 'honeypot'? ?=> \CodeIgniter\Filters\Honeypot::class,
? ? ? ? 'login'? ? ? => \App\Filters\LoginFilter::class,
? ? ];
? ? // Always applied before every request
? ? public $globals = [
? ? ? ? 'before' => [
? ? ? ? ? ? 'login',
? ? ? ? ? ? //'honeypot'
? ? ? ? ],
? ? ? ? 'after'? => [
? ? ? ? ? ? 'toolbar',
? ? ? ? ? ? //'honeypot'
? ? ? ? ],
? ? ];
- 1 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報