每次请求Laravel 5新会议

时间:2015-02-12 00:51:30

标签: php angularjs session laravel laravel-5

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

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

2 个答案:

答案 0 :(得分:1)

我现在刚刚完成了以下工作,因为我今天工作了很多个小时。 我编辑了我的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;
    }

}

答案 1 :(得分:0)

由于网络是无状态的,仅使用标题信息或域可能会导致中间人攻击。可以修改或复制来自客户端的任何内容,包括cookie数据。我在这里没有回答你的确切问题,但我建议采用不同的策略。

与api通信时使用的一种做法是使用具有安全请求的访问令牌;类似于oauth2客户端/服务器关系。通过向您的api发送XHR或CURL请求中的令牌,系统可以更好地验证与之通话的对象。否则,您可能会遇到欺骗经过身份验证的用户的人。