2014-11-03 26 views
6

Tôi có một máy chủ web laravel hiện đang quản lý nhiều tên miền, chẳng hạn như:laravel cookie auth miền chéo và bộ lọc

site1.domain.com, site2.domain.com, site3.domain.com 

tôi có với thành công rực rỡ thêm tên trang web để quá trình xác thực người dùng và do đó có một mỗi người dùng một bảng liên quan đến các trang web. Không có sự kiên trì của người dùng trên các trang web và chúng được coi là duy nhất. Điều này hoạt động tốt.

Đối với mỗi trang web, có một chương trình phụ trợ, ví dụ:

site1.domain.com/office 

Vì điều này, tôi có một nhóm người dùng khác của người quản trị mô hình. Để thực hiện công việc này, tôi có một bộ các đường dẫn auth khác nhau, một bộ điều khiển khác và tất cả những điều đó. Tôi đạt được điều này với bộ lọc sau.

App::before(function($request) 
{ 
    if ($request->is('office*')) 
    { 
    Config::set('auth.driver', 'eloquent.admin'); 
    Config::set('auth.model', 'Admin'); 

Quản trị viên này phổ biến trên các tên miền. Đó là để nói rằng tên người dùng là duy nhất trong mô hình quản trị.

Tính năng này hoạt động tốt nhưng cần phải tiếp tục.

Tôi muốn đăng nhập và đăng xuất để nhất quán giữa các trang web. Đó là để nói rằng nếu một quản trị viên đã đăng nhập vào một văn phòng trang web, họ đã đăng nhập vào tất cả và họ đăng xuất, họ đã đăng xuất khỏi tất cả.

Tôi đã cố gắng để cập nhật bộ lọc của tôi như sau:

App::before(function($request) 
{ 
    if ($request->is('office*')) 
    { 
    Config::set('auth.driver', 'eloquent.admin'); 
    Config::set('auth.model', 'Admin'); 

    Config::set('session.path', '/office'); 
    Config::set('session.domain', '.domain.com'); // tried without leading . too 
    } 
}); 

Tuy nhiên, nếu tôi phân tích các tập tin cookie của tôi trong trình duyệt của tôi, tên miền và thông tin đường dẫn đã không bị ảnh hưởng và vẫn như site.domain.com và/lượt .

Bạn có thể khai sáng cho tôi biết cách thay đổi thuộc tính cookie phiên dựa trên yêu cầu của tôi không?

Có sự phụ thuộc vào trang web. Trong nhiều như có một nhiều đến nhiều mối quan hệ giữa admin và trang web mà xác định là một admin có thể truy cập vào/văn phòng của một trang web cụ thể.

Tôi lo ngại rằng quản trị viên đã đăng nhập, họ sẽ có quyền truy cập vào bất kỳ văn phòng trang web nào.

Ý định của tôi là viết bộ lọc bổ sung "có thể quản trị trang web này" sẽ kiểm tra mối quan hệ.

Bạn có coi đây là biện pháp phù hợp trên bối cảnh của auth tên miền chéo được đề xuất cho quản trị viên không?

+0

Nếu bạn không nhớ tất cả người dùng được chia sẻ giữa các trang web, bạn chỉ có thể thay đổi miền cookie thành '.domain.com'. Tùy chọn khác là tạo bảo vệ/mô hình xác thực mới tạo/kiểm tra cookie JWT riêng biệt. – Sigismund

Trả lời

0

Nếu bạn mở app/config/session.php bạn đang sử dụng trình điều khiển nào? Một số, chẳng hạn như tệp dường như không lưu trữ dữ liệu trên các miền phụ thẻ hoang dã.

tôi giải quyết điều này bằng cách sử dụng Redis (nếu bạn đang sử dụng Homestead, nó phải là đã có sẵn cho bạn):

'driver' => 'redis', 

    'redis' => array(

    'cluster' => true, 

    'default' => array(
     'host'  => '127.0.0.1', 
     'port'  => 6379, 
     'database' => 0, 
    ), 

), 

này là để làm với cách các trình điều khiển khác nhau sử dụng hostname để tham khảo phiên dữ liệu.

Các vấn đề liên quan