2013-11-20 23 views
5

Tôi muốn buộc người dùng đăng xuất trong symfony2 sau khi kiểm tra xem nó có đủ khả năng truy cập vào một khu vực được bảo mật cụ thể hay không.Cách buộc người dùng đăng xuất symfony2

Tôi đã thử với:

$this->get('request')->getSession()->invalidate(); 

nhưng có vẻ như họ gặp khó khăn, người dùng vẫn đăng nhập cho đến khi tôi đăng nhập anh ta ra sử dụng tuyến đường/logout.

Tôi đã đề cập đến việc tôi đang sử dụng KayueWordpressBundle để kết nối ứng dụng symfony của tôi với một trang web dựa trên wordpress để tạo một văn phòng tùy chỉnh.

Đây là tập tin security.yml tôi

security: 
firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    login_firewall: 
     pattern: ^/$ 
     anonymous: ~ 
    secured_area: 
     pattern: ^/ 
     kayue_wordpress: ~ 
     form_login: 
      check_path: /login_check 
      login_path:/
     logout: 
      path: /logout 
      target:/
access_control: 
    - { path: ^/admin, roles: ROLE_ADMIN } 

providers: 
    wordpress: 
     entity: { class: Kayue\WordpressBundle\Entity\User, property: username } 

encoders: 
    Kayue\WordpressBundle\Entity\User: 
     id: kayue_wordpress.security.encoder.phpass 

Làm thế nào tôi có thể làm điều này xin vui lòng?

Cảm ơn bạn

+0

thể trùng lặp của [Symfony2: làm thế nào để đăng nhập người sử dụng ra bằng tay trong điều khiển] (http://stackoverflow.com/questions/6464754/ symfony2-how-to-log-user-out-thủ-trong-điều khiển) –

Trả lời

20

Bạn có thể buộc logout bằng cách gọi setToken() với null, hãy thử một cái gì đó như thế này:

$this->container->get('security.context')->setToken(null); 

Nó sẽ phá hủy sử dụng thẻ từ bối cảnh an ninh và kick người dùng ra.


Ngoài ra, xin vui lòng xem câu hỏi này để biết thêm chi tiết: Symfony2: how to log user out manually in controller?

+0

Cảm ơn bạn nó hoạt động cho tôi :) –

+0

giải pháp nêu trên sẽ không gọi trình xử lý đăng xuất, nếu tôi đã đăng ký bất kỳ trình xử lý nào để đăng xuất. – Jaimin

+1

BTW, sử dụng '$ this-> container-> get ('security.authorization_checker')' thay thế (mới trong 2.6) – Ronan

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