2012-02-10 24 views
7

Tôi đang cố gắng thay đổi vai trò của người dùng, sử dụng FOSUserBundle. Vấn đề là: nếu người dùng được đăng nhập cùng một lúc, anh ta phải relog để xem vai trò mới.Thay đổi vai trò của người dùng ở xa mà không cần phải relog

Bất kỳ giải pháp nào?

+0

Làm thế nào bạn có câu trả lời của bạn? Tôi đang đối mặt với cùng một vấn đề ... –

Trả lời

-1

1: Bạn phải bật switch_role: true trong cấu hình tường lửa của mình. 2: Tiếp theo, bạn phải cho phép vai trò của ROLE_ADMIN để có thể chuyển sang vai trò khác. 3: chỉ cần tạo liên kết tới? _switch_role = userNameCanonical

chủ yếu được thực hiện bởi các bảo mật symfony không liên quan gì đến việc chuyển đổi vai trò.

+0

Không hoạt động ... Xem nhận xét của tôi về @Pivasyk. Cảm ơn bạn – Joffrey

0

Hãy thử điều này trong điều khiển của bạn:

$this->get('fos_user.user_manager')->refreshUser($user); 

Xem FOS/UserBundle/mẫu/UserManager.php

+0

Cảm ơn bạn đã trả lời, nhưng nó không thực sự là những gì tôi đang tìm kiếm. Tôi có thể làm mới vai trò của người dùng trong phiên hiện tại. Điều tôi đang cố làm là làm mới vai trò của người dùng ở xa. Giả sử tôi là quản trị viên và tôi muốn thay đổi vai trò của người dùng được kết nối. Anh ta sẽ phải tìm lại vai trò mới ... Làm thế nào tôi có thể tránh được điều đó và làm cho nó thay đổi ngay lập tức? Cảm ơn bạn. – Joffrey

12

Theo Security Configuration Reference, có một tùy chọn always_authenticate_before_granting. Không có nhiều thông tin về điều đó, nhưng tôi đã thử nó với các vai trò tùy chỉnh tải từ cơ sở dữ liệu và nó thực hiện thủ thuật. Dường như mọi lúc bạn sẽ tạo một yêu cầu mới, thành phần bảo mật sẽ tải lại vai trò.

Vì vậy, nếu bạn muốn chắc chắn vai trò của bạn được làm mới và nạp lại trong phiên người dùng của bạn chỉ cần thiết lập tùy chọn này để true trong bạn security.yml:

# app/config/security.yml 
security: 
    always_authenticate_before_granting: false 
+0

Điều đó dường như tăng gấp đôi việc xử lý trang trong các phiên bản mới nhất của symfony ... :( –

+1

Nó có làm tăng IO cơ sở dữ liệu không? – tom10271

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