PHP日记——Lavarel操作cookie和session

在实际开发中难免会有登录功能,这个功能主要依靠cookiesession来传递登录的用户
我们以一个登录系统为例

首先配置好路由

web.php或者route.php

Route::any('/login', 'LoginController@login');
Route::any('/logout', 'LoginController@logout');
Route::any('/index', 'LoginController@index');

cookie

withCookie(cookie()->forever('name',$input['name']));
            //设置10分钟cookie
            return redirect("index")->withCookie(cookie()->make('name', $input['name'],10));
        }else {
            $response = new Response(view('login'));
            $response->withCookie(cookie()->forget('user'));
            return $response;
        }
    }

    function logout(){
        //清空cookie
        return redirect("index")->withCookie(cookie()->forget('name'));
    }

    function index(Request $request){
        //获取cookie
        $value=$request->cookie('name');
        if ($value==null){
            return 'fali';
        }else{
            return view('welcome');
        }
    }
}

细心的朋友可能会发现,get方法访问login时,渲染页面用了Response包裹着view,这是因为只有重定向时cookie才会发生改变,所以必须new一个Response

session

$input['name']]);
            return redirect("index");
        }else {
            //清空session
            session(['user'=>null]);
            return view('login');
        }
    }

    function logout(){
        //清空session
        session(['user'=>null]);
        return redirect("index");
    }

    function index(Request $request){
        //获取session
        $value=session('name');
        if ($value==null){
            return 'fali';
        }else{
            return view('welcome');
        }
    }
}

sessioncookie少了时间设置,操作起来也比较简单

最后附上一个简单判断是否登录的中间件写法

新建一个Middleware,取名为AdminLogin
Kernel.php注册

 protected $routeMiddleware = [
        //......
        'admin.superlogin'=>\App\Http\Middleware\AdminSuperLogin::class,
    ];

编写AdminLogin中间件

cookie('user')){
            return redirect('login');
        }
        return $next($request);
    }
}

你可能感兴趣的:(PHP日记——Lavarel操作cookie和session)