2012-05-09 39 views
6

Tôi đang học Zend Framework, nhưng tôi có một số nghi ngờ về cách sử dụng và khái niệm.Cách kiểm tra xem người dùng có được đăng nhập với Zend Framework không?

Tôi muốn kiểm tra xem người dùng có đăng nhập để cho phép truy cập vào tất cả các trang hay không. Nếu có, hãy hiển thị trang, nếu không, hãy hiển thị trang đăng nhập.

nghi ngờ chính của tôi là những gì tôi cần phải sử dụng để làm điều này (Zend_Auth, Zend_Acl, vv) và nơi để kiểm tra xem người dùng sẽ được đăng nhập (trong mỗi bộ điều khiển hoặc khuôn khổ tự động kiểm tra này đối với từng trưng dụng) .

+0

ACL thường được sử dụng cho các mức độ kiểm soát người dùng. Bạn muốn Zend_Auth. – Brendan

+0

Đối với người dùng đã phủ nhận, tại sao -1? –

+1

Bởi vì "câu hỏi của bạn không hiển thị bất kỳ nỗ lực nghiên cứu" (di chuột qua mũi tên bỏ phiếu xuống để xem điều đó). Có rất nhiều hướng dẫn để được tìm thấy và có một hướng dẫn tuyệt vời cho ZF mà sẽ cung cấp cho bạn những thông tin bạn đang tìm kiếm. Trong mọi trường hợp, câu trả lời của tôi sẽ giúp bạn đi đúng hướng. Chúc may mắn. – vascowhite

Trả lời

5

Công cụ bạn muốn sử dụng là Zend_Auth khá dễ sử dụng khi bạn bị treo.

Kiểm tra nếu người dùng đang đăng nhập có thể đơn giản như: -

$auth = Zend_Auth::getInstance(); 
if($auth->hasIdentity()) $loggedIn = true; 

Xem Rob Allen's excellent tutorial on getting started with Zend Auth.

Phương pháp tôi sử dụng là thiết lập một lớp người dùng mà chăm sóc kiểm soát phép và truy cập và tiêm nó vào ứng dụng của tôi như một Action Helper, vì vậy mà trong bất kỳ bộ điều khiển của tôi, tôi chỉ có thể làm: -

$this->user->checkSomething(); 

Phần ủy quyền cần ảnh hưởng đến tất cả các phần của trang web mà bạn không muốn công khai và mỗi bộ điều khiển bị ảnh hưởng cần kiểm tra xem người dùng đã đăng nhập chưa. Để kiểm soát truy cập, điều đó được thực hiện trên cơ sở mỗi vai trò/tài nguyên tùy thuộc vào cách hạt mịn bạn cần phải được .Xem ACLAUTH trong sách hướng dẫn.

+0

Không sử dụng hành động Người giúp việc được coi là xấu cho hiệu suất? – Songo

+0

Bằng cách nào? Trình trợ giúp hành động chỉ được tải nếu cần, tôi chưa bao giờ nhận thấy bất kỳ vấn đề hiệu suất nào với nó. Bạn có thể liên kết đến một nguồn cho điều đó không? Tôi muốn đọc nó. – vascowhite

+0

tốt, Nó đã được đề cập trong câu trả lời được chấp nhận cho câu hỏi này [http://stackoverflow.com/questions/4708754/optimising-the-zend-framework). Tôi cũng tìm thấy [bài viết này] (http://www.rmauger.co.uk/2009/03/why-the-zend-framework-actionstack-is-evil/) cách đây không lâu. Tôi không điều tra nhiều hơn nữa vì tôi hiếm khi sử dụng Action Helpers.Nếu bạn có các tài liệu khác không đồng ý với điều này thì plz đăng nó. – Songo

2

Bạn muốn kiểm tra xem người dùng có đăng nhập ZendFramework không? Hãy thử điều này:

Nơi này ở bất cứ nơi nào của điều khiển của bạn để 'gỡ rối', và đặt nó trong đầu hoặc bắt đầu của mã của bạn:

if (Zend_Auth::getInstance()->hasIdentity()) echo "oh yeah I'm logged in lol"; die; 
Các vấn đề liên quan