2008-10-26 36 views
5

Tôi đang cố gắng để có được xác thực làm việc theo ý thích của tôi trong một ứng dụng CakePHP và chạy vào một snag.Làm cách nào để nhận được đăng nhậpRedirect từ nhiều vị trí đăng nhập trong CakePHP?

Tôi muốn cho phép người dùng đăng nhập từ trang chủ hoặc từ trang đăng nhập chuyên dụng. Tôi đang sử dụng các thành phần Auth để quản lý đăng nhập và ngay bây giờ đăng nhập chính nó hoạt động. Tôi đang gửi biểu mẫu trên trang chủ tới/Người dùng/Đăng nhập và nó đăng nhập vào và tạo phiên. Vấn đề là nó sau đó chuyển hướng người dùng trở lại trang chủ. Tôi muốn họ chuyển hướng đến vị trí được chỉ định trong loginRedirect.

Nếu tôi đăng nhập từ/người dùng/đăng nhập trực tiếp, hãy chuyển tiếp để đăng nhậpRedirect. Tôi nghĩ rằng vấn đề có liên quan đến việc đăng tải biểu mẫu từ một trang đến một trang khác thay vì tự nó, auth tự động nghĩ rằng bạn muốn quay lại trang trước đó.

Mọi suy nghĩ?

Trả lời

8

trong AppController

public function beforeFilter() 
{ 
    $this->Auth->autoRedirect = false; 
} 

trong UsersController

public function login() 
{ 
    if($this->Auth->user()) 
    { 
     $this->redirect(array(
      'controller' => 'users' , 
      'action' => 'index' , 
     )); 
    } 
} 

Ngoài ra, nếu bạn chưa có, bạn nên di chuyển các hình thức vào một yếu tố, do đó bạn có thể chắc chắn tuyệt đối biểu mẫu đăng nhập giống hệt nhau giữa 2 lượt xem đăng nhập.

+0

Dọn dẹp một loạt các câu hỏi rất cũ mà tôi chưa bao giờ chấp nhận. Lời xin lỗi của tôi. Sau đó tôi đã làm điều này một lần nữa cho một dự án khác và đề xuất này đã làm việc. Không chắc chắn tại sao tôi gặp vấn đề lần đầu tiên (đó là lý do tại sao tôi không bao giờ chấp nhận) – JoshReedSchramm

0

Có auth có tính năng sẽ chuyển hướng bạn đến trang bạn đã truy cập trước khi đăng nhập. Nếu đặt chuyển hướng đăng nhập không hoạt động, bạn có thể thử đặt loginRedirect thành false và thực hiện thủ công ($ this -> chuyển hướng ([..]) trong hành động đăng nhập UsersController ::

0

bạn có thể tắt $ autoRedirect bằng cách đặt nó thành sai và tự xử lý chuyển hướng. Vấn đề với AuthComponent là, có quá nhiều automagic mà bạn không thể thực sự kiểm soát, hoặc chỉ bằng hack.

Một giải pháp cho vấn đề của bạn là xóa khóa Session.Auth.redirect, vì vậy AuthComponent sẽ luôn sử dụng $ loginRedirect URL:

$this->Session->del('Auth.redirect'); 
Các vấn đề liên quan