Laravel 5每个请求新会话

问题描述:

我有以下设置: Laravel5和AnguarlJS Angular在前端发送$ http请求到Laravel5后端。 前端位于test.example.com,后端位于api.example.com 我现在的问题如下。 如果用户获得了一个与我们的数据库相匹配的令牌,并且它已经获得了一个打开的会话,那么该站点将在启动时进行测试。 如果不是,用户可以像正常一样使用他的凭据登录。当登录创建的令牌已成功保存到我们的数据库中并且令牌应保存到会话项目中。完成后,会再次检查用户是否正确登录,但显然会话是空的。 我们注意到,Laravel为我们从AngularJS所做的每个请求创建一个新会话。原因可能是来自不同子域的JS请求是跨域请求,浏览器不会发送cookie来识别会话。这可能是原因。Laravel 5每个请求新会话

显然我不知道这个问题的解决方案。

+0

尝试域设置为'“域” =>“.example.com的”,''中的config/session.php'文件 – Razor 2015-02-12 01:08:59

+0

我有这样的全部时间,这是不是问题 – Sebi55 2015-02-12 01:15:05

自从我今天工作了几个小时以来,我刚刚完成了以下工作。 我已经编辑了我的nginx配置来服务不在子域上的api,也在子文件夹上。我的配置是这样的:

location /api { 
    # First attempt to serve request as file, then 
    # as directory, then fall back to displaying a 404. 
    index index.php; 
    alias /srv/www/htdocs/api/public; 
    if (-f $request_filename) { 
     break; 
    } 

    ## Check for file existing and if there, stop ## 
    if (-d $request_filename) { 
     break; 
    } 

    ## If we get here then there is no file or directory matching request_filename ## 
    rewrite (.*) /api/index.php?$query_string; 

    ## Normal php block for processing ## 
    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 

} 

由于Web是无状态的,只是使用头信息或域可能导致中间人攻击。来自客户端的任何内容都可以被修改或复制,包括cookie数据。我对这里的确切问题没有回答,但我会推荐一个不同的策略。

与api通信时使用的一种做法是将访问令牌与安全请求一起使用;类似于oauth2客户端/服务器关系。通过将XHR或CURL请求中的令牌发送给您的api,系统可以更好地验证其与谁交谈。否则,您可能会遇到欺骗您的已验证用户的人。