2017-11-22 37 views
5

tôi có ứng dụng laravel được lưu trữ trên máy chủ a.com và ứng dụng này xử lý tất cả xác thực cho các ứng dụng Laravel khác trên các máy chủ khác, Máy chủ 1 - app.com - không quản lý xác thực/người dùng cho hệ thống và lưu trữ nó trong một cookie được gửi qua các máy chủ 2,3 và 4,Auth :: user() trả về null trên miền, trong ứng dụng laravel

server 2. mail.app.com 
server 3. fms.app.com 
server 4. dod.app.com 

có một chức năng khởi chạy trên máy chủ 2,3 và 4 cố gắng giải mã các cookie được gửi qua các tên miền từ máy chủ 1. trông giống như thế này.

public function initialize(){ 
     $mail = json_decode($logged_in_user_cookie)->email; 
     $user = User::where('email', $mail)->first();  
     if(!$user){ 
     $user = new User; 
     $user->email = $mail; 
     $user->save(); 
     } 
     Auth::login($user); 

     if(Auth::check()){ 
     //dd($user); - works fine.. 
     return redirect()->route('dashboard'); 

     }else{ 
     echo 'user not logged in '; 
     } 

    } 

Servers 2, 3 và 4 cũng có bảng người dùng nhưng không có mật khẩu, vì vậy nếu một cookie lượt truy cập bất kỳ các máy chủ, hệ thống sẽ đọc cookie và chiết xuất các đối tượng sử dụng từ cookie và kiểm tra nếu có người dùng không tồn tại, tạo người dùng và sau đó sử dụng [Auth :: login ($ user)] để đăng nhập người dùng vào hệ thống hiện tại và nếu người dùng đã tồn tại .. nó sẽ tự động đăng nhập vào người dùng ..

bây giờ vấn đề chúng tôi đang gặp phải là, trên dòng này chuyển hướng trả lại() -> tuyến đường ('trang tổng quan'); Nó chuyển hướng bạn đến trang bảng điều khiển của ứng dụng và dd (Auth :: user()) - nó trả về null,

và chúng tôi không thể tìm ra lý do tại sao nó hoạt động theo cách đó. kể từ khi người dùng Auth ::(), nên có sẵn trên toàn bộ ứng dụng, Chỉ cần nghĩ về cách thức hoạt động của google,

google.com, - một đăng nhập kiểm soát mọi ứng dụng bao gồm youtube drive.google.com, thư .google.com, play.google.com, news.google.com, plus.google.com, youtube.com - đó là những gì chúng tôi đang cố gắng làm.

Trả lời

2

Đi tới config/session.php và đổi tên 'cookie' => 'laravel_session' thành tên phiên của bạn. Ví dụ: 'cookie' => 'foo_session'. Điều này sẽ làm việc.