牛骨文教育服务平台(让学习变的简单)
博文笔记

记录 laravel session失效问题

创建时间:2017-04-21 投稿人: 浏览次数:5448

最新在学习laravel,用到了session,因为laravel没法用$_SESSION 所以只能用框架的session。

贴上代码

<?php

namespace AppHttpControllers;
use AppHttpRequests;
use Request;
use IlluminateSupportFacadesSession;

class CommonController extends Controller
{
    static function  login(){
        $team_id=Request::input("team_id");
        $uuid=Request::input("uuid");
        $key=Request::input("key");
        if(empty($team_id)){
            $team_id=Session::get("team_id");
        }
        if(empty($uuid)){
            $uuid=Session::get("uuid");
        }
        if(empty($key)){
            $key=Session::get("key");
        }
//        session(["team_id"=>$team_id]);
        Session::put("team_id",$team_id);
        Session::put("uuid",$uuid);
        Session::put("key",$key);
        Session::save();
    }
    public static  function islogin(){
        $team_id=Session::get("team_id");
        $uuid=Session::get("uuid");
        $key=Session::get("key");
        if(!empty($team_id)&&!empty($uuid)){
            if($key != 1234){
                echo "没有权限";
                exit;
            }
        }else{
            echo "没有权限";
            exit;
        }
    }
}
在当前页面可以到SESSION,但是跨页面就失效,以为是AJAX的CSRF验证问题,查找试了不是,然后经过打印发现2个SESSION不一致,继续检查最后发现是在定义路由的时候没有定义在同一个分组内所以导致SESSION不一致。

将路由重新定义好了

Route::group(["middleware"=>"web"],function() {
    Route::any("/report/billviews", "reportUserbillController@BillViews");
    Route::any("/report/index","reportUseraccessController@index");//把需要用到session的路由请求全部放在web组里。
    Route::any("/report/countprice", "reportUserbillController@CountPrice");
    Route::any("islogin", "CommonController@islogin");
    Route::any("login", "CommonController@login");
});
还有个坑laravel5.2的session必须要过中间件
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。