2015-02-12 137 views
0

我有以下設置: 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

回答

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; 
    } 

} 
0

由於Web是無狀態的,只是使用頭信息或域可能導致中間人攻擊。來自客戶端的任何內容都可以被修改或複製,包括cookie數據。我對這裏的確切問題沒有回答,但我會推薦一個不同的策略。

與api通信時使用的一種做法是將訪問令牌與安全請求一起使用;類似於oauth2客戶端/服務器關係。通過將XHR或CURL請求中的令牌發送給您的api,系統可以更好地驗證其與誰交談。否則,您可能會遇到欺騙您的已驗證用戶的人。

相關問題