Không ai có thể đăng nhập và truy cập tin nhắn bị từ chối


7

Các trang web làm việc cho đến ngày hôm qua và bây giờ nó hoạt động kỳ lạ.

  • Trang web không được tạo bằng các tính năng, kết xuất kho lưu trữ bao gồm mã và cơ sở dữ liệu được sao chép vào máy chủ và cài đặt cũ được thay thế bằng thủ công mới (không may). Bây giờ nó không liên quan cũng xảy ra trên máy chủ cục bộ.
  • Không có mô-đun bộ đệm được cài đặt. API phiên cũng không được cài đặt.
  • Chủ đề được đặt thành 'bảy' (chủ đề quản trị viên cốt lõi, chỉ trong trường hợp).
  • Cơ quan giám sát không chứa bất kỳ lỗi, cảnh báo hoặc thông tin nào ngoại trừ "phiên thông thường được mở cho người dùng xyz";
  • Tệp cài đặt không chứa bất kỳ chỉ thị cookie đặc biệt nào. Nó không bao giờ làm.
  • Trang web đang chạy trên php 5.6, Apache 2.2, CentOS 6. PHP đang chạy nhanh như cgi. Vẫn như mọi khi.
  • Đó là Drupal 7.

Tôi truy cập example.com/user/login, nhập tên người dùng và mật khẩu, biểu mẫu được gửi thành công, trang được chuyển hướng đến example.com/user/%uid (đã thử cả uid 1 và người dùng khác). và bùm! Tôi nhận được một quyền truy cập bị từ chối . Và người dùng không đăng nhập.

Nếu tôi cắt bớt bảng phiên với truncate table sessionstôi có thể đăng nhập một lần và chỉ một lần, với bất kỳ người dùng nào. Sau đó, một lần nữa không ai có thể đăng nhập thậm chí không phải là 1.

Ngoài ra với một liên kết đặt lại mật khẩu (sử dụng lệnh drush ulitôi có thể đăng nhập mà không có vấn đề gì).

Tôi đã vô hiệu hóa tất cả các mô-đun đóng góp và chủ đề, nhưng vấn đề tương tự vẫn tồn tại.

Điều gì gây ra vấn đề như vậy với các phiên? có ý kiến ​​gì không


2
Nếu đây là Drupal 6, hãy đảm bảo rằng hồ sơ người dùng ẩn danh trong cơ sở dữ liệu vẫn có uid0 (nó thường bị chặn bởi phần mềm bán phá giá sql và được đánh số lại). Những gì bạn đang mô tả chính xác là những gì xảy ra khi bản ghi đó bị mất
Clive

@Clive cảm ơn, tôi đã kiểm tra nhưng uid 0 là có. Nhập cùng một bãi chứa DB trên máy tính xách tay của tôi cũng hoạt động tốt. và đó là D7, tôi chỉnh sửa câu hỏi.
hkoosha

Tôi đoán điều này có liên quan đến việc băm mật khẩu. Có lẽ bạn nên buộc người dùng của mình phải đăng ký lại và làm lại mật khẩu của họ. Trên tên miền mới, mật khẩu băm sẽ được thay đổi và do đó sẽ không bao giờ có hiệu lực ...
Akko

@Akko không ... tôi vẫn bị từ chối. Tôi nhận được một lỗi mật khẩu sai nếu nhập sai mật khẩu, nhưng vấn đề là truy cập bí ẩn bị từ chối.
hkoosha

@loolooyyy Bạn đã cài đặt mô-đun 'truy cập nội dung' hay đại loại như thế?
Krishna Mohan

Câu trả lời:


13

Vấn đề là mô đun ip_geoloc . Nó đã gây rối cho biến $ _SESSION, một giải pháp được đưa ra trên hàng đợi vấn đề (hiện tại!) Và tác giả mô-đun đồng ý với nó. Rất có khả năng nó đang xảy ra do cấu hình sai của tôi. Người dùng đã đăng nhập thành công nhưng ngay lập tức phiên của họ bị vô hiệu. Bằng cách nào đó vô hiệu hóa nó là không đủ và thư mục của nó đã phải được chuyển ra khỏi root Drupal. Tôi chắc chắn 100% không có bất kỳ chức năng hoặc API nào được sử dụng ở bất kỳ nơi nào khác. Có lẽ một số vấn đề bộ nhớ cache?

Bài học kinh nghiệm:

Khi có ký hợp vấn đề, hãy thử để kiểm tra biến $ _SESSION trên máy chủ sử dụng devel và nó chức năng helper (ví dụ như DPM , dsm , đ , ... hoặc là một var_export phương sách cuối cùng) và không phải với bạn google / firefox phát triển giao diện điều khiển .

Đây là lần thứ ba tôi phải đối mặt với hành vi kỳ lạ này và lần đầu tiên tôi có thể khắc phục. Nếu bạn đang gặp vấn đề này, hãy thử làm theo danh sách kiểm tra này:

Tự hỏi mình đi:

  • Liệu cắt ngắn bảng phiên khắc phục vấn đề?
  • Việc buộc thay đổi mật khẩu người dùng có khắc phục được sự cố không?
  • Bạn đã thêm bất kỳ cấu hình cụ thể vào settings.php của bạn ? ví dụ: base_url, cookie_domain, ...
  • Liệu UID 0 tồn tại trong cơ sở dữ liệu của bạn (tức là vô danh người dùng)?
  • Có bất kỳ mô-đun chuyển hướng được cài đặt? tìm kiếm 404 , chuyển hướng , global_redirect , ...
  • Bạn có kích hoạt một mô-đun tùy chỉnh ?
  • Có bất kỳ vấn đề với chủ đề của bạn ?
  • Bạn có bất kỳ mô-đun thay đổi đường dẫn, ví dụ path_alias?
  • Bạn có bất kỳ mô-đun thay đổi hành vi đăng nhập? ví dụ: logintoboggan
  • Bạn đã kích hoạt bất kỳ mô-đun bộ đệm? ví dụ: authcache , memcache , session_cache , boost , véc ni , ...
  • Bạn có bất kỳ mô-đun kiểm soát truy cập kích hoạt? ví dụ: bàn làm việc, content_access, acl, og_access, ...
  • Và cuối cùng, bạn đã kích hoạt bất kỳ mô-đun nào thay đổi người dùng $ _SESSION chưa? ví dụ: session_api , session_cache , ip_geoloc , ...

Nơi để tìm / Những việc cần làm

  • Nhìn vào tin nhắn drdogals watchdog. Nếu bạn không thể đăng nhập, hãy sử dụng chương trình theo dõi chương trình drush - để xem điều gì đang xảy ra.
  • Nếu chạy apache và mod-php, hãy xem nhật ký lỗi của apache, thường là tại / var / log / apache / error_log cho các hệ thống * nix.
  • Nếu chạy php-fpm, hãy xem nhật ký php-fpm, đảm bảo không có vấn đề giao tiếp với php daemon, chẳng hạn như các tiêu đề không bị mất. nếu bạn thấy không có nhật ký lỗi, hãy thử chạy trang web của bạn với máy chủ nội bộ drush / php. lệnh là drush rshoặcdrush rs the.ip.goes.here:thePort
  • tạo một bản sao lưu đầy đủ, vô hiệu hóa tất cả các mô-đun bằng lệnh này SAU tạo bản sao lưu đầy đủ (bạn có thể tạo bản sao lưu bằng drush ardhoặc chỉ cơ sở dữ liệu drush sql-dump > db.sqlhoặc sử dụng mô-đun backup_migrate)
    drush dis -y $(drush pml --nocore --status=enabled --pipe)-> lệnh này chỉ hoạt động trong các hệ thống * nix Tôi không biết dịch trực tiếp cho windows .
  • Đặt chủ đề mặc định của bạn thành một cái gì đó ... an toàn! chẳng hạn như bảy hoặc vòng hoa. Nếu bạn không thể đăng nhập, hãy sử dụng lệnh drush này :
    drush en seven && drush vset theme_default seven;
  • Theo dõi biến $ _SESSION với bất kỳ công cụ gỡ lỗi nào, xem nội dung của nó có đúng không, ok, lành mạnh.
  • Đối với tất cả các quy trình và trình nền liên quan đến việc phục vụ một yêu cầu (nginx, php-fpm, apache, vecni ...), hãy đảm bảo rằng tất cả chúng đều có quyền truy cập ghi vào thư mục tmp của chúng.

Chúc may mắn gỡ lỗi!


4

Điều làm việc cho tôi là cho phép và định cấu hình $cookie_domainbiến trong settings.php (vì tôi có một trang web có thể được truy cập bởi 2 tên miền khác nhau).

Hãy chú ý đến nhận xét trước biến này! Tên miền phải bắt đầu bằng một khoảng thời gian. VÍ DỤ:

$cookie_domain = '.example.com';

Chúc may mắn!


Bạn đã tiết kiệm cho tôi hàng giờ để gỡ lỗi
Sboniso Marcus Nzimande
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.