2015-11-04 90 views
2

我正在开发一个小型网站,并且会话有问题。当我尝试登录或使AJAX调用,我得到了以下的RuntimeException:Laravel会话存储未根据请求设置

RuntimeException in Request.php line 758: Session store not set on request. 

in Request.php line 758 
at Request->session() in VerifyCsrfToken.php line 87 
at VerifyCsrfToken->tokensMatch(object(Request)) in VerifyCsrfToken.php line 49 
at VerifyCsrfToken->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Language.php line 38 
at Language->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(Language), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59 
at EncryptCookies->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Kernel.php line 122 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 
at Kernel->handle(object(Request)) in index.php line 54 

任何想法,我做了什么错。在此先感谢

回答

0

删除everyting这个文件夹storage/framework/sessions 内,并确保该文件夹具有写权限

+0

它并没有帮助,我仍然得到的RuntimeException,但由于无论如何, – icemanblas

0

请问文件“/config/session.php”在你的项目存在吗?如果没有,请创建它并确保所有选项都设置正确。

+2

是的,它确实存在,并且据我所知,所有的选项都设置正确,我会再仔细检查一下,看看有没有什么我可以做的,但是我必须创建一个新项目并手动导入所有文件,现在另一个项目按预期工作 – icemanblas

1

看@Cas布勒姆在这里他的回答帮我出令人惊讶:

Laravel - Session store not set on request

这就是为什么它不是为我工作。因为你正在使用一个期望匹配CSRF令牌的会话(是我最好的猜测,我是Laravel自己的新手)。

此外,如果你去app-> http-> middleware-> VerifyCsrfToken这是你可以添加路由到数组将不检查CSRF验证。这加上Cas Bloem的修复(在routes.php的不同部分放置路由)解决了我的问题。我现在只是在localhost上开发/学习,但需要稍后再实施。

希望这有助于/清除的东西!

+0

此解决方案仅适用于laravel 5.2哪些不是OP正在运行 – mhughes

1

假设您使用Laravel 5.2:如果您需要会话状态,CSRF保护等,则需要使用Web中间件。 (如在5.1全球)

路线::组([ '中间件'=> [ '网络'],函数(){

+1

他使用的OP状态5.1 –

+0

是的,我在该项目上使用了5.1,正如我之前所说的,解决方案是创建Laravel 5.1的新副本,并导入我生成的所有文件,该项目是一个一团糟,几个开发人员对它进行了处理,并且我设法处理了它。感谢您的帮助,但这是一种亲身体验,所以不能选择正确的答案,尽管您的答案可能适用于与此例外相关的其他问题。 – icemanblas